Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
All Data Structures Namespaces Files Functions Variables Pages
AuthObserverTest.php
Go to the documentation of this file.
1 <?php
8 
14 use Magento\Framework\Event\ManagerInterface as EventManagerInterface;
23 use Magento\User\Model\User as ModelUser;
24 use Magento\User\Model\UserFactory;
26 
31 class AuthObserverTest extends \PHPUnit\Framework\TestCase
32 {
34  protected $observerConfig;
35 
38 
40  protected $userMock;
41 
43  protected $urlInterfaceMock;
44 
46  protected $authSessionMock;
47 
49  protected $userFactoryMock;
50 
52  protected $encryptorMock;
53 
56 
59 
61  protected $eventManagerMock;
62 
64  protected $model;
65 
66  protected function setUp()
67  {
68  $this->configInterfaceMock = $this->getMockBuilder(\Magento\Backend\App\ConfigInterface::class)
69  ->disableOriginalConstructor()
70  ->setMethods([])
71  ->getMock();
72 
73  $this->userMock = $this->getMockBuilder(\Magento\User\Model\ResourceModel\User::class)
74  ->disableOriginalConstructor()
75  ->setMethods([])
76  ->getMock();
77 
78  $this->urlInterfaceMock = $this->getMockBuilder(\Magento\Backend\Model\UrlInterface::class)
79  ->disableOriginalConstructor()
80  ->setMethods([])
81  ->getMock();
82 
83  $this->authSessionMock = $this->getMockBuilder(\Magento\Backend\Model\Auth\Session::class)
84  ->disableOriginalConstructor()
85  ->setMethods(
86  [
87  'setPciAdminUserIsPasswordExpired',
88  'unsPciAdminUserIsPasswordExpired',
89  'getPciAdminUserIsPasswordExpired',
90  'isLoggedIn',
91  'clearStorage'
92  ]
93  )->getMock();
94 
95  $this->userFactoryMock = $this->getMockBuilder(\Magento\User\Model\UserFactory::class)
96  ->disableOriginalConstructor()
97  ->setMethods(['create'])
98  ->getMock();
99 
100  $this->encryptorMock = $this->getMockBuilder(\Magento\Framework\Encryption\EncryptorInterface::class)
101  ->disableOriginalConstructor()
102  ->setMethods([])
103  ->getMock();
104 
105  $this->managerInterfaceMock = $this->getMockBuilder(\Magento\Framework\Message\ManagerInterface::class)
106  ->disableOriginalConstructor()
107  ->setMethods([])
108  ->getMock();
109 
110  $this->messageInterfaceMock = $this->getMockBuilder(\Magento\Framework\Message\MessageInterface::class)
111  ->disableOriginalConstructor()
112  ->setMethods([])
113  ->getMock();
114 
115  $this->eventManagerMock = $this->getMockBuilder(\Magento\Framework\Event\ManagerInterface::class)
116  ->disableOriginalConstructor()
117  ->setMethods([])
118  ->getMockForAbstractClass();
119 
120  $helper = new ObjectManager($this);
121 
122  $this->observerConfig = $helper->getObject(
123  \Magento\User\Model\Backend\Config\ObserverConfig::class,
124  [
125  'backendConfig' => $this->configInterfaceMock
126  ]
127  );
128 
129  $this->model = $helper->getObject(
130  \Magento\User\Observer\Backend\AuthObserver::class,
131  [
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
141  ]
142  );
143  }
144 
145  public function testAdminAuthenticate()
146  {
147  $password = "myP@sw0rd";
148  $uid = 123;
149  $authResult = true;
150  $lockExpires = false;
151  $userPassword = [
152  'expires' => 1,
153  'last_updated' => 1496248367
154  ];
155 
157  $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
158  ->disableOriginalConstructor()
159  ->setMethods([])
160  ->getMock();
161 
163  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
164  ->disableOriginalConstructor()
165  ->setMethods(['getPassword', 'getUser', 'getResult'])
166  ->getMock();
167 
169  $userMock = $this->getMockBuilder(\Magento\User\Model\User::class)
170  ->disableOriginalConstructor()
171  ->setMethods(['getId', 'getLockExpires', 'getPassword', 'save'])
172  ->getMock();
173 
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())
184  ->method('getValue')
185  ->willReturn(1);
186 
188  $collectionMock = $this->getMockBuilder(\Magento\Framework\Message\Collection::class)
189  ->disableOriginalConstructor()
190  ->setMethods([])
191  ->getMock();
192 
193  $this->managerInterfaceMock->expects($this->once())->method('getMessages')->willReturn($collectionMock);
194  $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);
201 
202  $this->model->execute($eventObserverMock);
203  }
204 
205  public function testAdminAuthenticateThrowsException()
206  {
207  $password = "myP@sw0rd";
208  $authResult = true;
209  $lockExpires = '3015-07-08 11:14:15.638276';
210 
212  $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
213  ->disableOriginalConstructor()
214  ->setMethods([])
215  ->getMock();
216 
218  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
219  ->disableOriginalConstructor()
220  ->setMethods(['getPassword', 'getUser', 'getResult'])
221  ->getMock();
222 
224  $userMock = $this->getMockBuilder(\Magento\User\Model\User::class)
225  ->disableOriginalConstructor()
226  ->setMethods(['getId', 'getLockExpires', 'getPassword'])
227  ->getMock();
228 
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);
234 
235  try {
236  $this->model->execute($eventObserverMock);
237  } catch (UserLockedException $expected) {
238  return;
239  }
240  $this->fail('An expected exception has not been raised.');
241  }
242 
243  public function testAdminAuthenticateUpdateLockingInfo()
244  {
245  $password = "myP@sw0rd";
246  $uid = 123;
247  $authResult = false;
248  $firstFailure = '1965-07-08 11:14:15.638276';
249  $numOfFailures = 5;
250 
252  $eventObserverMock = $this->getMockBuilder(\Magento\Framework\Event\Observer::class)
253  ->disableOriginalConstructor()
254  ->setMethods([])
255  ->getMock();
256 
258  $eventMock = $this->getMockBuilder(\Magento\Framework\Event::class)
259  ->disableOriginalConstructor()
260  ->setMethods(['getPassword', 'getUser', 'getResult'])
261  ->getMock();
262 
264  $userMock = $this->getMockBuilder(\Magento\User\Model\User::class)
265  ->disableOriginalConstructor()
266  ->setMethods(['getId', 'getFailuresNum', 'getFirstFailure'])
267  ->getMock();
268 
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())
276  ->method('getValue')
277  ->willReturn(1);
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');
281 
282  $this->model->execute($eventObserverMock);
283  }
284 }
$helper
Definition: iframe.phtml:13