7
7
8
8
namespace Magento \Security \Model \ResourceModel ;
9
9
10
+ use Magento \Framework \Exception \LocalizedException ;
10
11
use Magento \Framework \Locale \ResolverInterface ;
11
12
use Magento \Framework \Stdlib \DateTime \TimezoneInterface ;
12
13
use Magento \Security \Model \UserExpirationFactory ;
14
+ use Magento \TestFramework \Fixture \DataFixture ;
15
+ use Magento \TestFramework \Fixture \DataFixtureStorageManager ;
13
16
use Magento \TestFramework \Helper \Bootstrap ;
14
17
use Magento \User \Model \ResourceModel \User as UserResource ;
18
+ use Magento \User \Test \Fixture \User as UserDataFixture ;
15
19
use PHPUnit \Framework \TestCase ;
16
20
17
21
/**
@@ -26,10 +30,12 @@ class UserExpirationTest extends TestCase
26
30
27
31
/**
28
32
* @inheritdoc
33
+ * @throws LocalizedException
29
34
*/
30
35
protected function setUp (): void
31
36
{
32
37
$ this ->userExpirationResource = Bootstrap::getObjectManager ()->get (UserExpiration::class);
38
+ $ this ->fixtures = DataFixtureStorageManager::getStorage ();
33
39
}
34
40
35
41
/**
@@ -82,6 +88,43 @@ public function userExpirationSaveDataProvider(): array
82
88
];
83
89
}
84
90
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
+
85
128
/**
86
129
* Retrieve user id from db.
87
130
*
0 commit comments