Skip to content

Commit 362b20b

Browse files
[ACQE-4691] Moved implementatkon to new file with new data fixture type
1 parent b076681 commit 362b20b

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
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+
* @inheritdoc
47+
* @throws LocalizedException
48+
*/
49+
protected function setUp(): void
50+
{
51+
$this->userExpirationResource = Bootstrap::getObjectManager()->get(UserExpiration::class);
52+
$this->fixtures = DataFixtureStorageManager::getStorage();
53+
$this->userExpirationFactory = Bootstrap::getObjectManager()->get(UserExpirationFactory::class);
54+
$this->timeZone = Bootstrap::getObjectManager()->get(TimezoneInterface::class);
55+
}
56+
57+
/**
58+
* Verify user expiration saved with large date.
59+
*
60+
* @throws LocalizedException
61+
* @return void
62+
*/
63+
#[
64+
DataFixture(UserDataFixture::class, ['role_id' => 1], 'user')
65+
]
66+
public function testLargeExpirationDate(): void
67+
{
68+
$user = $this->fixtures->get('user');
69+
$userId = $user->getDataByKey('user_id');
70+
71+
// Get date more than 100 years from current date
72+
$initialExpirationDate = $this->timeZone->date()->modify('+100 years');
73+
$expireDate = $this->timeZone->formatDateTime(
74+
$initialExpirationDate,
75+
\IntlDateFormatter::MEDIUM,
76+
\IntlDateFormatter::MEDIUM
77+
);
78+
79+
// Set Expiration date to the admin user and save
80+
$this->setExpirationDateToUser($expireDate, (int)$userId);
81+
82+
// Load admin expiration date from database
83+
$loadedUserExpiration = $this->userExpirationFactory->create();
84+
$this->userExpirationResource->load($loadedUserExpiration, $this->userExpiration->getId());
85+
86+
self::assertEquals($initialExpirationDate->format('Y-m-d H:i:s'), $loadedUserExpiration->getExpiresAt());
87+
}
88+
89+
/**
90+
* Set expiration date to admin user and save
91+
*
92+
* @param string $expirationDate
93+
* @param int $userId
94+
*
95+
* @return void
96+
* @throws AlreadyExistsException
97+
*/
98+
public function setExpirationDateToUser(string $expirationDate, int $userId): void
99+
{
100+
$this->userExpiration = $this->userExpirationFactory->create();
101+
$this->userExpiration->setExpiresAt($expirationDate);
102+
$this->userExpiration->setUserId($userId);
103+
$this->userExpirationResource->save($this->userExpiration);
104+
}
105+
}

0 commit comments

Comments
 (0)