77
88namespace Magento \Security \Model \ResourceModel ;
99
10+ use Magento \Framework \Exception \LocalizedException ;
1011use Magento \Framework \Locale \ResolverInterface ;
1112use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
1213use Magento \Security \Model \UserExpirationFactory ;
14+ use Magento \TestFramework \Fixture \DataFixture ;
15+ use Magento \TestFramework \Fixture \DataFixtureStorageManager ;
1316use Magento \TestFramework \Helper \Bootstrap ;
1417use Magento \User \Model \ResourceModel \User as UserResource ;
18+ use Magento \User \Test \Fixture \User as UserDataFixture ;
1519use PHPUnit \Framework \TestCase ;
1620
1721/**
@@ -26,10 +30,12 @@ class UserExpirationTest extends TestCase
2630
2731 /**
2832 * @inheritdoc
33+ * @throws LocalizedException
2934 */
3035 protected function setUp (): void
3136 {
3237 $ this ->userExpirationResource = Bootstrap::getObjectManager ()->get (UserExpiration::class);
38+ $ this ->fixtures = DataFixtureStorageManager::getStorage ();
3339 }
3440
3541 /**
@@ -82,6 +88,43 @@ public function userExpirationSaveDataProvider(): array
8288 ];
8389 }
8490
91+ /**
92+ * Verify user expiration saved with large date.
93+ *
94+ * @throws LocalizedException
95+ * @return void
96+ */
97+ #[
98+ DataFixture(UserDataFixture::class, ['role_id ' => 1 ], 'user ' )
99+ ]
100+ public function testLargeExpirationDate (): void
101+ {
102+ $ user = $ this ->fixtures ->get ('user ' );
103+ $ userId = $ user ->getDataByKey ('user_id ' );
104+
105+ // Get date more than 100 years from current date
106+ $ timeZone = Bootstrap::getObjectManager ()->get (TimezoneInterface::class);
107+ $ initialExpirationDate = $ timeZone ->date ()->modify ('+100 years ' );
108+ $ expireDate = $ timeZone ->formatDateTime (
109+ $ initialExpirationDate ,
110+ \IntlDateFormatter::MEDIUM ,
111+ \IntlDateFormatter::MEDIUM
112+ );
113+
114+ // Set Expiration date to the admin user and save
115+ $ userExpirationFactory = Bootstrap::getObjectManager ()->get (UserExpirationFactory::class);
116+ $ userExpiration = $ userExpirationFactory ->create ();
117+ $ userExpiration ->setExpiresAt ($ expireDate );
118+ $ userExpiration ->setUserId ($ userId );
119+ $ this ->userExpirationResource ->save ($ userExpiration );
120+
121+ // Load admin expiration date from database
122+ $ loadedUserExpiration = $ userExpirationFactory ->create ();
123+ $ this ->userExpirationResource ->load ($ loadedUserExpiration , $ userExpiration ->getId ());
124+
125+ self ::assertEquals ($ initialExpirationDate ->format ('Y-m-d H:i:s ' ), $ loadedUserExpiration ->getExpiresAt ());
126+ }
127+
85128 /**
86129 * Retrieve user id from db.
87130 *
0 commit comments