Skip to content

Commit 0a4176e

Browse files
committed
Add integration test for admin user password reset
1 parent e82531d commit 0a4176e

File tree

1 file changed

+39
-0
lines changed
  • dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml

1 file changed

+39
-0
lines changed

dev/tests/integration/testsuite/Magento/User/Controller/Adminhtml/AuthTest.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
*/
66
namespace Magento\User\Controller\Adminhtml;
77

8+
use Magento\Framework\Stdlib\DateTime;
89
use Magento\TestFramework\Mail\Template\TransportBuilderMock;
910
use Magento\TestFramework\Helper\Bootstrap;
1011

@@ -106,6 +107,44 @@ public function testResetPasswordAction()
106107
$this->assertTrue((bool)strpos($this->getResponse()->getBody(), $resetPasswordToken));
107108
}
108109

110+
/**
111+
* Test reset password action extends expiry of token
112+
*
113+
* @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::execute
114+
* @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::_validateResetPasswordLinkToken
115+
* @magentoDataFixture Magento/User/_files/dummy_user.php
116+
*/
117+
public function testResetPasswordActionWithTokenNearExpiry()
118+
{
119+
/** @var $user \Magento\User\Model\User */
120+
$user = Bootstrap::getObjectManager()->create(
121+
\Magento\User\Model\User::class
122+
)->loadByUsername(
123+
'dummy_username'
124+
);
125+
$this->assertNotEmpty($user->getId(), 'Broken fixture');
126+
$resetPasswordToken = Bootstrap::getObjectManager()->get(
127+
\Magento\User\Helper\Data::class
128+
)->generateResetPasswordLinkToken();
129+
$user->changeResetPasswordLinkToken($resetPasswordToken);
130+
131+
$anHourAgo = Bootstrap::getObjectManager()->create(DateTime::class)
132+
->sub(\DateInterval::createFromDateString('1 hour'))
133+
->format(DateTime::DATETIME_PHP_FORMAT);
134+
$user->setRpTokenCreatedAt($anHourAgo);
135+
$user->save();
136+
137+
$this->getRequest()->setQueryValue('token', $resetPasswordToken)->setQueryValue('id', $user->getId());
138+
$this->dispatch('backend/admin/auth/resetpassword');
139+
140+
$this->assertEquals('adminhtml', $this->getRequest()->getRouteName());
141+
$this->assertEquals('auth', $this->getRequest()->getControllerName());
142+
$this->assertEquals('resetpassword', $this->getRequest()->getActionName());
143+
$this->assertTrue((bool)strpos($this->getResponse()->getBody(), $resetPasswordToken));
144+
145+
$this->assertNotEquals($anHourAgo, $user->reload()->getRpTokenCreatedAt());
146+
}
147+
109148
/**
110149
* @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::execute
111150
* @covers \Magento\User\Controller\Adminhtml\Auth\ResetPassword::_validateResetPasswordLinkToken

0 commit comments

Comments
 (0)