24 $this->dispatch(
'backend/admin/auth/forgotpassword');
25 $expected =
'Password Help';
26 $this->assertContains($expected, $this->
getResponse()->getBody());
38 $this->dispatch(
'backend/admin/auth/forgotpassword');
41 Bootstrap::getObjectManager()->
get(
42 \
Magento\Backend\Helper\Data::class
55 public function testEmailSendForgotPasswordAction()
58 $transportMock = Bootstrap::getObjectManager()->get(
59 TransportBuilderMock::class
62 $this->dispatch(
'backend/admin/auth/forgotpassword');
65 Bootstrap::getObjectManager()->
get(
66 \
Magento\Backend\Helper\Data::class
70 $message = $transportMock->getSentMessage();
73 __(
'Password Reset Confirmation for %1', [
'John Doe'])->render(),
85 public function testResetPasswordAction()
88 $user = Bootstrap::getObjectManager()->create(
93 $this->assertNotEmpty(
$user->getId(),
'Broken fixture');
94 $resetPasswordToken = Bootstrap::getObjectManager()->get(
95 \
Magento\User\Helper\Data::class
96 )->generateResetPasswordLinkToken();
97 $user->changeResetPasswordLinkToken($resetPasswordToken);
100 $this->
getRequest()->setQueryValue(
'token', $resetPasswordToken)->setQueryValue(
'id',
$user->getId());
101 $this->dispatch(
'backend/admin/auth/resetpassword');
103 $this->assertEquals(
'adminhtml', $this->
getRequest()->getRouteName());
104 $this->assertEquals(
'auth', $this->
getRequest()->getControllerName());
105 $this->assertEquals(
'resetpassword', $this->
getRequest()->getActionName());
106 $this->assertTrue((
bool)strpos($this->
getResponse()->getBody(), $resetPasswordToken));
115 $this->
getRequest()->setQueryValue(
'token',
'dummy')->setQueryValue(
'id', 1);
116 $this->dispatch(
'backend/admin/auth/resetpassword');
118 $this->equalTo([
'Your password reset link has expired.']),
119 \
Magento\Framework\Message\MessageInterface::TYPE_ERROR
130 public function testResetPasswordPostAction($password, $passwordConfirmation, $isPasswordChanged)
136 $user->loadByUsername(
'dummy_username');
137 $this->assertNotEmpty(
$user->getId(),
'Broken fixture');
142 $resetPasswordToken =
$helper->generateResetPasswordLinkToken();
143 $user->changeResetPasswordLinkToken($resetPasswordToken);
145 $oldPassword =
$user->getPassword();
158 $passwordConfirmation
161 $this->dispatch(
'backend/admin/auth/resetpasswordpost');
165 if ($isPasswordChanged) {
166 $this->
assertRedirect($this->equalTo($backendHelper->getHomePageUrl()));
169 $this->stringContains(
'backend/admin/auth/resetpassword')
175 $user->loadByUsername(
'dummy_username');
177 if ($isPasswordChanged) {
180 $this->assertTrue(
$encryptor->validateHash($password,
$user->getPassword()));
182 $this->assertEquals($oldPassword,
$user->getPassword());
188 $password = uniqid(
'123q');
190 [$password, $password,
true],
191 [$password,
'',
false],
192 [$password, $password .
'123',
false],
194 [
'', $password,
false]
203 public function testResetPasswordPostActionWithDummyToken()
205 $this->
getRequest()->setQueryValue(
'token',
'dummy')->setQueryValue(
'id', 1);
206 $this->dispatch(
'backend/admin/auth/resetpasswordpost');
208 $this->equalTo([
'Your password reset link has expired.']),
209 \
Magento\Framework\Message\MessageInterface::TYPE_ERROR
217 $this->
assertRedirect($this->equalTo($backendHelper->getHomePageUrl()));
225 public function testResetPasswordPostActionWithInvalidPassword()
230 $user->loadByUsername(
'dummy_username');
231 $resetPasswordToken =
null;
232 if (
$user->getId()) {
236 $resetPasswordToken = $userHelper->generateResetPasswordLinkToken();
237 $user->changeResetPasswordLinkToken($resetPasswordToken);
241 $newDummyPassword =
'new_dummy_password2';
257 $this->dispatch(
'backend/admin/auth/resetpasswordpost');
260 $this->equalTo([
'Your password confirmation must match your password.']),
261 \
Magento\Framework\Message\MessageInterface::TYPE_ERROR
276 $transportMock = $this->getMockBuilder(\
Magento\Framework\Mail\TransportInterface::class)
277 ->setMethods([
'sendMessage'])
278 ->getMockForAbstractClass();
279 $transportMock->expects($this->exactly($occurrenceNumber))
280 ->method(
'sendMessage');
281 $transportBuilderMock = $this->getMockBuilder(\
Magento\Framework\Mail\Template\TransportBuilder::class)
282 ->disableOriginalConstructor()
288 'setTemplateIdentifier',
290 'setTemplateOptions',
295 $transportBuilderMock->method(
'setTemplateIdentifier')
298 $transportBuilderMock->method(
'setTemplateModel')
299 ->with(\
Magento\Email\Model\BackendTemplate::class)
301 $transportBuilderMock->method(
'setTemplateOptions')
303 $transportBuilderMock->method(
'setTemplateVars')
305 $transportBuilderMock->method(
'setFrom')
308 $transportBuilderMock->method(
'addTo')
310 $transportBuilderMock->expects($this->exactly($occurrenceNumber))
311 ->method(
'getTransport')
312 ->willReturn($transportMock);
314 return $transportBuilderMock;
324 \PHPUnit_Framework_MockObject_MockObject $transportBuilderMock,
327 $userMock = $this->_objectManager->create(
329 [
'transportBuilder' => $transportBuilderMock]
331 $factoryMock = $this->getMockBuilder(\
Magento\
User\Model\UserFactory::class)
332 ->disableOriginalConstructor()
339 $factoryMock->method(
'create')
340 ->willReturn($userMock);
341 $this->_objectManager->addSharedInstance(
assertRedirect(\PHPUnit\Framework\Constraint\Constraint $urlConstraint=null)
testForgotpasswordAction()
testResetPasswordActionWithDummyToken()
prepareEmailMock($occurrenceNumber, $templateId, $sender)
addMockToClass(\PHPUnit_Framework_MockObject_MockObject $transportBuilderMock, $originalClassName)
testFormForgotpasswordAction()
assertSessionMessages(\PHPUnit\Framework\Constraint\Constraint $constraint, $messageType=null, $messageManagerClass=\Magento\Framework\Message\Manager::class)
resetPasswordDataProvider()