Skip to content

Commit 91598c2

Browse files
committed
Merge remote-tracking branch '37982/fix-for-issue-37902' into bt_comm_pr_247beta3
2 parents a996014 + 162ae77 commit 91598c2

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

app/code/Magento/PageCache/etc/events.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<event name="model_save_commit_after">
4949
<observer name="flush_cache_after_model_save" instance="Magento\PageCache\Observer\FlushCacheByTags" />
5050
</event>
51-
<event name="backend_auth_user_login_success">
51+
<event name="admin_user_authenticate_after">
5252
<observer name="FlushFormKey" instance="Magento\PageCache\Observer\FlushFormKey"/>
5353
</event>
5454
<event name="customer_login">

app/code/Magento/User/Test/Unit/Observer/Backend/AuthObserverTest.php

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Magento\Framework\Event;
1515
use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
1616
use Magento\Framework\Event\Observer;
17+
use Magento\Framework\Exception\LocalizedException;
1718
use Magento\Framework\Exception\State\UserLockedException;
1819
use Magento\Framework\Message\Collection;
1920
use Magento\Framework\Message\ManagerInterface;
@@ -243,6 +244,71 @@ public function testAdminAuthenticateThrowsException()
243244
$this->fail('An expected exception has not been raised.');
244245
}
245246

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+
246312
public function testAdminAuthenticateUpdateLockingInfo()
247313
{
248314
$password = "myP@sw0rd";

0 commit comments

Comments
 (0)