|
14 | 14 | use Magento\Framework\Event;
|
15 | 15 | use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
|
16 | 16 | use Magento\Framework\Event\Observer;
|
| 17 | +use Magento\Framework\Exception\LocalizedException; |
17 | 18 | use Magento\Framework\Exception\State\UserLockedException;
|
18 | 19 | use Magento\Framework\Message\Collection;
|
19 | 20 | use Magento\Framework\Message\ManagerInterface;
|
@@ -243,6 +244,71 @@ public function testAdminAuthenticateThrowsException()
|
243 | 244 | $this->fail('An expected exception has not been raised.');
|
244 | 245 | }
|
245 | 246 |
|
| 247 | + /** |
| 248 | + * @magentoConfigFixture admin/security/password_lifetime 1 |
| 249 | + * @return void |
| 250 | + * @throws LocalizedException |
| 251 | + */ |
| 252 | + public function testAdminAuthenticatePasswordExpire(): void |
| 253 | + { |
| 254 | + $password = "myP@sw0rd"; |
| 255 | + $uid = 123; |
| 256 | + $authResult = true; |
| 257 | + $lockExpires = false; |
| 258 | + $userPassword = [ |
| 259 | + 'expires' => 1, |
| 260 | + 'last_updated' => 1694661402 |
| 261 | + ]; |
| 262 | + |
| 263 | + /** @var Observer|MockObject $eventObserverMock */ |
| 264 | + $eventObserverMock = $this->getMockBuilder(Observer::class) |
| 265 | + ->disableOriginalConstructor() |
| 266 | + ->setMethods([]) |
| 267 | + ->getMock(); |
| 268 | + |
| 269 | + /** @var Event|MockObject */ |
| 270 | + $eventMock = $this->getMockBuilder(Event::class) |
| 271 | + ->disableOriginalConstructor() |
| 272 | + ->setMethods(['getPassword', 'getUser', 'getResult']) |
| 273 | + ->getMock(); |
| 274 | + |
| 275 | + /** @var ModelUser|MockObject $userMock */ |
| 276 | + $userMock = $this->getMockBuilder(\Magento\User\Model\User::class) |
| 277 | + ->disableOriginalConstructor() |
| 278 | + ->setMethods(['getId', 'getLockExpires', 'getPassword', 'save']) |
| 279 | + ->getMock(); |
| 280 | + |
| 281 | + $eventObserverMock->expects($this->atLeastOnce())->method('getEvent')->willReturn($eventMock); |
| 282 | + $eventMock->expects($this->once())->method('getPassword')->willReturn($password); |
| 283 | + $eventMock->expects($this->once())->method('getUser')->willReturn($userMock); |
| 284 | + $eventMock->expects($this->once())->method('getResult')->willReturn($authResult); |
| 285 | + $userMock->expects($this->atLeastOnce())->method('getId')->willReturn($uid); |
| 286 | + $userMock->expects($this->once())->method('getLockExpires')->willReturn($lockExpires); |
| 287 | + $this->userMock->expects($this->once())->method('unlock'); |
| 288 | + $this->userMock->expects($this->once())->method('getLatestPassword')->willReturn($userPassword); |
| 289 | + $this->configInterfaceMock |
| 290 | + ->expects($this->atLeastOnce()) |
| 291 | + ->method('getValue') |
| 292 | + ->willReturn(1); |
| 293 | + |
| 294 | + /** @var Collection|MockObject $collectionMock */ |
| 295 | + $collectionMock = $this->getMockBuilder(Collection::class) |
| 296 | + ->disableOriginalConstructor() |
| 297 | + ->setMethods([]) |
| 298 | + ->getMock(); |
| 299 | + |
| 300 | + $this->managerInterfaceMock->expects($this->once())->method('getMessages')->willReturn($collectionMock); |
| 301 | + $collectionMock |
| 302 | + ->expects($this->once()) |
| 303 | + ->method('getLastAddedMessage') |
| 304 | + ->willReturn($this->messageInterfaceMock); |
| 305 | + $this->messageInterfaceMock->expects($this->once())->method('setIdentifier')->willReturnSelf(); |
| 306 | + $this->authSessionMock->expects($this->once())->method('setPciAdminUserIsPasswordExpired'); |
| 307 | + $this->encryptorMock->expects($this->once())->method('validateHashVersion')->willReturn(false); |
| 308 | + |
| 309 | + $this->model->execute($eventObserverMock); |
| 310 | + } |
| 311 | + |
246 | 312 | public function testAdminAuthenticateUpdateLockingInfo()
|
247 | 313 | {
|
248 | 314 | $password = "myP@sw0rd";
|
|
0 commit comments