Skip to content

Commit 66cc162

Browse files
Merge branch 'ACQE-4691' into integration-tests-mainline
2 parents e6052ea + eacb084 commit 66cc162

File tree

1 file changed

+113
-0
lines changed

1 file changed

+113
-0
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\User\Model;
9+
10+
use Magento\Framework\Exception\AlreadyExistsException;
11+
use Magento\Framework\Exception\LocalizedException;
12+
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
13+
use Magento\Security\Model\ResourceModel\UserExpiration;
14+
use Magento\TestFramework\Fixture\DataFixture;
15+
use Magento\TestFramework\Fixture\DataFixtureStorage;
16+
use Magento\TestFramework\Fixture\DataFixtureStorageManager;
17+
use Magento\TestFramework\Helper\Bootstrap;
18+
use Magento\User\Test\Fixture\User as UserDataFixture;
19+
use Magento\Security\Model\UserExpirationFactory;
20+
use PHPUnit\Framework\TestCase;
21+
22+
class UserExpirationTest extends TestCase
23+
{
24+
25+
/**
26+
* @var UserExpiration
27+
*/
28+
private $userExpirationResource;
29+
30+
/**
31+
* @var DataFixtureStorage
32+
*/
33+
private $fixtures;
34+
35+
/**
36+
* @var TimezoneInterface
37+
*/
38+
private $timeZone;
39+
40+
/**
41+
* @var UserExpiration
42+
*/
43+
private $userExpiration;
44+
45+
/**
46+
* @var UserExpirationFactory
47+
*/
48+
private $userExpirationFactory;
49+
50+
/**
51+
* @inheritdoc
52+
* @throws LocalizedException
53+
*/
54+
protected function setUp(): void
55+
{
56+
$this->userExpirationResource = Bootstrap::getObjectManager()->get(UserExpiration::class);
57+
$this->fixtures = DataFixtureStorageManager::getStorage();
58+
$this->userExpirationFactory = Bootstrap::getObjectManager()->get(UserExpirationFactory::class);
59+
$this->timeZone = Bootstrap::getObjectManager()->get(TimezoneInterface::class);
60+
}
61+
62+
/**
63+
* Verify user expiration saved with large date.
64+
*
65+
* @throws LocalizedException
66+
* @return void
67+
*/
68+
#[
69+
DataFixture(UserDataFixture::class, ['role_id' => 1], 'user')
70+
]
71+
public function testLargeExpirationDate(): void
72+
{
73+
$user = $this->fixtures->get('user');
74+
$userId = $user->getDataByKey('user_id');
75+
76+
// Get date more than 100 years from current date
77+
$initialExpirationDate = $this->timeZone->date()->modify('+100 years');
78+
$expireDate = $this->timeZone->formatDateTime(
79+
$initialExpirationDate,
80+
\IntlDateFormatter::MEDIUM,
81+
\IntlDateFormatter::MEDIUM
82+
);
83+
84+
// Set Expiration date to the admin user and save
85+
$this->setExpirationDateToUser($expireDate, (int)$userId);
86+
87+
// Load admin expiration date from database
88+
$loadedUserExpiration = $this->userExpirationFactory->create();
89+
$this->userExpirationResource->load($loadedUserExpiration, $this->userExpiration->getId());
90+
91+
self::assertEquals(
92+
strtotime($initialExpirationDate->format('Y-m-d H:i:s')),
93+
strtotime($loadedUserExpiration->getExpiresAt())
94+
);
95+
}
96+
97+
/**
98+
* Set expiration date to admin user and save
99+
*
100+
* @param string $expirationDate
101+
* @param int $userId
102+
*
103+
* @return void
104+
* @throws AlreadyExistsException
105+
*/
106+
private function setExpirationDateToUser(string $expirationDate, int $userId): void
107+
{
108+
$this->userExpiration = $this->userExpirationFactory->create();
109+
$this->userExpiration->setExpiresAt($expirationDate);
110+
$this->userExpiration->setUserId($userId);
111+
$this->userExpirationResource->save($this->userExpiration);
112+
}
113+
}

0 commit comments

Comments
 (0)