24 use Magento\User\Model\UserFactory;
68 $this->configInterfaceMock = $this->getMockBuilder(\
Magento\Backend\
App\ConfigInterface::class)
69 ->disableOriginalConstructor()
74 ->disableOriginalConstructor()
78 $this->urlInterfaceMock = $this->getMockBuilder(\
Magento\Backend\Model\UrlInterface::class)
79 ->disableOriginalConstructor()
83 $this->authSessionMock = $this->getMockBuilder(\
Magento\Backend\Model\Auth\Session::class)
84 ->disableOriginalConstructor()
87 'setPciAdminUserIsPasswordExpired',
88 'unsPciAdminUserIsPasswordExpired',
89 'getPciAdminUserIsPasswordExpired',
95 $this->userFactoryMock = $this->getMockBuilder(\
Magento\
User\Model\UserFactory::class)
96 ->disableOriginalConstructor()
97 ->setMethods([
'create'])
100 $this->encryptorMock = $this->getMockBuilder(\
Magento\Framework\Encryption\EncryptorInterface::class)
101 ->disableOriginalConstructor()
105 $this->managerInterfaceMock = $this->getMockBuilder(\
Magento\Framework\Message\ManagerInterface::class)
106 ->disableOriginalConstructor()
110 $this->messageInterfaceMock = $this->getMockBuilder(\
Magento\Framework\Message\MessageInterface::class)
111 ->disableOriginalConstructor()
115 $this->eventManagerMock = $this->getMockBuilder(\
Magento\Framework\
Event\ManagerInterface::class)
116 ->disableOriginalConstructor()
118 ->getMockForAbstractClass();
122 $this->observerConfig =
$helper->getObject(
125 'backendConfig' => $this->configInterfaceMock
129 $this->model =
$helper->getObject(
132 'observerConfig' => $this->observerConfig,
133 'userResource' => $this->userMock,
134 'url' => $this->urlInterfaceMock,
135 'authSession' => $this->authSessionMock,
136 'userFactory' => $this->userFactoryMock,
137 'encryptor' => $this->encryptorMock,
138 'messageManager' => $this->managerInterfaceMock,
139 'messageInterface' => $this->messageInterfaceMock,
140 'eventManager' => $this->eventManagerMock
145 public function testAdminAuthenticate()
147 $password =
"myP@sw0rd";
150 $lockExpires =
false;
153 'last_updated' => 1496248367
157 $eventObserverMock = $this->getMockBuilder(\
Magento\Framework\
Event\Observer::class)
158 ->disableOriginalConstructor()
163 $eventMock = $this->getMockBuilder(\
Magento\Framework\Event::class)
164 ->disableOriginalConstructor()
165 ->setMethods([
'getPassword',
'getUser',
'getResult'])
170 ->disableOriginalConstructor()
171 ->setMethods([
'getId',
'getLockExpires',
'getPassword',
'save'])
174 $eventObserverMock->expects($this->atLeastOnce())->method(
'getEvent')->willReturn($eventMock);
175 $eventMock->expects($this->once())->method(
'getPassword')->willReturn($password);
176 $eventMock->expects($this->once())->method(
'getUser')->willReturn(
$userMock);
177 $eventMock->expects($this->once())->method(
'getResult')->willReturn($authResult);
178 $userMock->expects($this->atLeastOnce())->method(
'getId')->willReturn($uid);
179 $userMock->expects($this->once())->method(
'getLockExpires')->willReturn($lockExpires);
180 $this->userMock->expects($this->once())->method(
'unlock');
181 $this->userMock->expects($this->once())->method(
'getLatestPassword')->willReturn($userPassword);
182 $this->configInterfaceMock
183 ->expects($this->atLeastOnce())
188 $collectionMock = $this->getMockBuilder(\
Magento\Framework\Message\Collection::class)
189 ->disableOriginalConstructor()
193 $this->managerInterfaceMock->expects($this->once())->method(
'getMessages')->willReturn($collectionMock);
195 ->expects($this->once())
196 ->method(
'getLastAddedMessage')
197 ->willReturn($this->messageInterfaceMock);
198 $this->messageInterfaceMock->expects($this->once())->method(
'setIdentifier')->willReturnSelf();
199 $this->authSessionMock->expects($this->once())->method(
'setPciAdminUserIsPasswordExpired');
200 $this->encryptorMock->expects($this->once())->method(
'validateHashVersion')->willReturn(
false);
202 $this->model->execute($eventObserverMock);
205 public function testAdminAuthenticateThrowsException()
207 $password =
"myP@sw0rd";
209 $lockExpires =
'3015-07-08 11:14:15.638276';
212 $eventObserverMock = $this->getMockBuilder(\
Magento\Framework\Event\Observer::class)
213 ->disableOriginalConstructor()
218 $eventMock = $this->getMockBuilder(\
Magento\Framework\Event::class)
219 ->disableOriginalConstructor()
220 ->setMethods([
'getPassword',
'getUser',
'getResult'])
225 ->disableOriginalConstructor()
226 ->setMethods([
'getId',
'getLockExpires',
'getPassword'])
229 $eventObserverMock->expects($this->atLeastOnce())->method(
'getEvent')->willReturn($eventMock);
230 $eventMock->expects($this->once())->method(
'getPassword')->willReturn($password);
231 $eventMock->expects($this->once())->method(
'getUser')->willReturn(
$userMock);
232 $eventMock->expects($this->once())->method(
'getResult')->willReturn($authResult);
233 $userMock->expects($this->once())->method(
'getLockExpires')->willReturn($lockExpires);
236 $this->model->execute($eventObserverMock);
237 }
catch (UserLockedException $expected) {
240 $this->fail(
'An expected exception has not been raised.');
243 public function testAdminAuthenticateUpdateLockingInfo()
245 $password =
"myP@sw0rd";
248 $firstFailure =
'1965-07-08 11:14:15.638276';
252 $eventObserverMock = $this->getMockBuilder(\
Magento\Framework\Event\Observer::class)
253 ->disableOriginalConstructor()
258 $eventMock = $this->getMockBuilder(\
Magento\Framework\Event::class)
259 ->disableOriginalConstructor()
260 ->setMethods([
'getPassword',
'getUser',
'getResult'])
265 ->disableOriginalConstructor()
266 ->setMethods([
'getId',
'getFailuresNum',
'getFirstFailure'])
269 $eventObserverMock->expects($this->atLeastOnce())->method(
'getEvent')->willReturn($eventMock);
270 $eventMock->expects($this->once())->method(
'getPassword')->willReturn($password);
271 $eventMock->expects($this->once())->method(
'getUser')->willReturn(
$userMock);
272 $eventMock->expects($this->once())->method(
'getResult')->willReturn($authResult);
273 $userMock->expects($this->once())->method(
'getId')->willReturn($uid);
274 $this->configInterfaceMock
275 ->expects($this->atLeastOnce())
278 $userMock->expects($this->once())->method(
'getFailuresNum')->willReturn($numOfFailures);
279 $userMock->expects($this->once())->method(
'getFirstFailure')->willReturn($firstFailure);
280 $this->userMock->expects($this->once())->method(
'updateFailure');
282 $this->model->execute($eventObserverMock);