ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
ilTermsOfServiceRequestTargetAdjustmentCaseTest.php
Go to the documentation of this file.
1 <?php declare(strict_types=1);
2 
3 /* Copyright (c) 1998-2018 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
9 
15 {
20  {
21  $dic = new Container();
22 
23  $ctrl = $this
24  ->getMockBuilder(ilCtrl::class)
25  ->disableOriginalConstructor()
26  ->onlyMethods(['redirectToURL', 'getCmdClass', 'getCmd'])
27  ->getMock();
28 
29  $ctrl
30  ->expects($this->any())
31  ->method('getCmdClass')
32  ->willReturn('ilDashboardGUI');
33 
34  $ctrl
35  ->expects($this->any())
36  ->method('getCmd')
37  ->willReturn('');
38 
39  $ctrl
40  ->expects($this->once())
41  ->method('redirectToURL');
42  $dic['ilCtrl'] = function () use ($ctrl) {
43  return $ctrl;
44  };
45 
46  $user = $this
47  ->getMockBuilder(ilObjUser::class)
48  ->disableOriginalConstructor()
49  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
50  ->getMock();
51 
52  $user
53  ->expects($this->atLeast(1))
54  ->method('hasToAcceptTermsOfService')
55  ->willReturn(true);
56 
57  $user
58  ->expects($this->any())
59  ->method('checkTimeLimit')
60  ->willReturn(true);
61 
62  $user
63  ->expects($this->atLeast(1))
64  ->method('hasToAcceptTermsOfServiceInSession')
65  ->willReturn(true);
66  $dic['ilUser'] = function () use ($user) {
67  return $user;
68  };
69 
70  $request = $this
71  ->getMockBuilder(ServerRequestInterface::class)
72  ->disableOriginalConstructor()
73  ->getMock();
74  $http = $this
75  ->getMockBuilder(GlobalHttpState::class)
76  ->disableOriginalConstructor()
77  ->getMock();
78 
79  $http->expects($this->any())
80  ->method('request')
81  ->willReturn($request);
82  $dic['http'] = function () use ($http) {
83  return $http;
84  };
85 
86  $evaluator = $this
87  ->getMockBuilder(ilTermsOfServiceDocumentEvaluation::class)
88  ->getMock();
89  $dic['tos.document.evaluator'] = function () use ($evaluator) {
90  return $evaluator;
91  };
92 
93  $criterionFactory = $this
94  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
95  ->getMock();
96  $dic['tos.criteria.type.factory'] = function () use ($criterionFactory) {
97  return $criterionFactory;
98  };
99 
100  $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
101 
102  $this->assertTrue($requestInterceptor->shouldInterceptRequest());
103  $this->assertTrue($requestInterceptor->shouldStoreRequestTarget());
104  $requestInterceptor->execute();
105  }
106 
111  {
112  $dic = new Container();
113 
114  $ctrl = $this
115  ->getMockBuilder(ilCtrl::class)
116  ->disableOriginalConstructor()
117  ->onlyMethods(['getCmdClass', 'getCmd'])
118  ->getMock();
119 
120  $ctrl
121  ->expects($this->atLeast(1))
122  ->method('getCmdClass')
123  ->willReturn('ilstartupgui');
124 
125  $ctrl
126  ->expects($this->atLeast(1))
127  ->method('getCmd')
128  ->willReturn('getacceptance');
129  $dic['ilCtrl'] = function () use ($ctrl) {
130  return $ctrl;
131  };
132 
133  $user = $this
134  ->getMockBuilder(ilObjUser::class)
135  ->disableOriginalConstructor()
136  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
137  ->getMock();
138 
139  $user
140  ->expects($this->any())
141  ->method('hasToAcceptTermsOfService')
142  ->willReturn(true);
143 
144  $user
145  ->expects($this->any())
146  ->method('checkTimeLimit')
147  ->willReturn(true);
148 
149  $user
150  ->expects($this->any())
151  ->method('hasToAcceptTermsOfServiceInSession')
152  ->willReturn(true);
153  $dic['ilUser'] = function () use ($user) {
154  return $user;
155  };
156 
157  $request = $this
158  ->getMockBuilder(ServerRequestInterface::class)
159  ->disableOriginalConstructor()
160  ->getMock();
161  $http = $this
162  ->getMockBuilder(GlobalHttpState::class)
163  ->disableOriginalConstructor()
164  ->getMock();
165 
166  $http->expects($this->any())
167  ->method('request')
168  ->willReturn($request);
169  $dic['http'] = function () use ($http) {
170  return $http;
171  };
172 
173  $evaluator = $this
174  ->getMockBuilder(ilTermsOfServiceDocumentEvaluation::class)
175  ->getMock();
176  $dic['tos.document.evaluator'] = function () use ($evaluator) {
177  return $evaluator;
178  };
179 
180  $criterionFactory = $this
181  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
182  ->getMock();
183  $dic['tos.criteria.type.factory'] = function () use ($criterionFactory) {
184  return $criterionFactory;
185  };
186 
187  $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
188 
189  $this->assertFalse($requestInterceptor->shouldInterceptRequest());
190  }
191 
196  public function userProvider() : array
197  {
198  $user1 = $this
199  ->getMockBuilder(ilObjUser::class)
200  ->disableOriginalConstructor()
201  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
202  ->getMock();
203 
204  $user1
205  ->expects($this->any())
206  ->method('hasToAcceptTermsOfService')
207  ->willReturn(false);
208 
209  $user1
210  ->expects($this->any())
211  ->method('checkTimeLimit')
212  ->willReturn(true);
213 
214  $user1
215  ->expects($this->any())
216  ->method('hasToAcceptTermsOfServiceInSession')
217  ->willReturn(true);
218 
219  $user2 = $this
220  ->getMockBuilder(ilObjUser::class)
221  ->disableOriginalConstructor()
222  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
223  ->getMock();
224 
225  $user2
226  ->expects($this->any())
227  ->method('hasToAcceptTermsOfService')
228  ->willReturn(true);
229 
230  $user2
231  ->expects($this->any())
232  ->method('checkTimeLimit')
233  ->willReturn(false);
234 
235  $user2
236  ->expects($this->any())
237  ->method('hasToAcceptTermsOfServiceInSession')
238  ->willReturn(true);
239 
240  $user3 = $this
241  ->getMockBuilder(ilObjUser::class)
242  ->disableOriginalConstructor()
243  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
244  ->getMock();
245 
246  $user3
247  ->expects($this->any())
248  ->method('hasToAcceptTermsOfService')
249  ->willReturn(true);
250 
251  $user3
252  ->expects($this->any())
253  ->method('checkTimeLimit')
254  ->willReturn(true);
255 
256  $user3
257  ->expects($this->any())
258  ->method('hasToAcceptTermsOfServiceInSession')
259  ->willReturn(false);
260 
261  return [
262  'User 1' => [$user1],
263  'User 2' => [$user2],
264  'User 3' => [$user3],
265  ];
266  }
267 
273  public function testUserShouldNotBeForcedToAcceptTermsOfServiceWhenAlreadyDone(ilObjUser $user) : void
274  {
275  $logger = $this
276  ->getMockBuilder(ilLogger::class)
277  ->disableOriginalConstructor()
278  ->getMock();
279 
280  $loggingServices = $this
281  ->getMockBuilder(LoggingServices::class)
282  ->disableOriginalConstructor()
283  ->onlyMethods(['root', '__call'])
284  ->getMock();
285  $loggingServices
286  ->expects($this->any())
287  ->method('root')
288  ->willReturn($logger);
289  $loggingServices->expects($this->any())
290  ->method('__call')
291  ->willReturn($logger);
292 
293  $dic = new class($loggingServices) extends Container {
295  private $loggingServices;
296 
301  public function __construct(LoggingServices $loggingServices)
302  {
303  $this->loggingServices = $loggingServices;
305  }
306 
310  public function logger()
311  {
312  return $this->loggingServices;
313  }
314  };
315 
316  $ctrl = $this
317  ->getMockBuilder(ilCtrl::class)
318  ->disableOriginalConstructor()
319  ->onlyMethods(['getCmdClass', 'getCmd'])
320  ->getMock();
321 
322  $ctrl
323  ->expects($this->any())
324  ->method('getCmdClass')
325  ->willReturn('ilDashboardGUI');
326 
327  $ctrl
328  ->expects($this->any())
329  ->method('getCmd')
330  ->willReturn('');
331  $dic['ilCtrl'] = function () use ($ctrl) {
332  return $ctrl;
333  };
334 
335  $request = $this
336  ->getMockBuilder(ServerRequestInterface::class)
337  ->disableOriginalConstructor()
338  ->getMock();
339  $http = $this
340  ->getMockBuilder(GlobalHttpState::class)
341  ->disableOriginalConstructor()
342  ->getMock();
343 
344  $http->expects($this->any())
345  ->method('request')
346  ->willReturn($request);
347  $dic['http'] = function () use ($http) {
348  return $http;
349  };
350 
351  $evaluator = $this
352  ->getMockBuilder(ilTermsOfServiceDocumentEvaluation::class)
353  ->getMock();
354  $dic['tos.document.evaluator'] = function () use ($evaluator) {
355  return $evaluator;
356  };
357 
358  $criterionFactory = $this
359  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
360  ->getMock();
361  $dic['tos.criteria.type.factory'] = function () use ($criterionFactory) {
362  return $criterionFactory;
363  };
364 
365  $service = $this
366  ->getMockBuilder(ilTermsOfServiceHelper::class)
367  ->disableOriginalConstructor()
368  ->getMock();
369  $service->expects($this->any())
370  ->method('hasToResignAcceptance')
371  ->willReturn(false);
372  $dic['tos.service'] = function () use ($service) {
373  return $service;
374  };
375 
376  $dic['ilUser'] = function () use ($user) {
377  return $user;
378  };
379 
380  $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
381 
382  $this->assertFalse($requestInterceptor->shouldInterceptRequest());
383  }
384 
389  public function testUserShouldBeForcedToResignTermsOfService() : void
390  {
391  $logger = $this
392  ->getMockBuilder(ilLogger::class)
393  ->disableOriginalConstructor()
394  ->getMock();
395 
396  $loggingServices = $this
397  ->getMockBuilder(LoggingServices::class)
398  ->disableOriginalConstructor()
399  ->onlyMethods(['root', '__call'])
400  ->getMock();
401  $loggingServices
402  ->expects($this->any())
403  ->method('root')
404  ->willReturn($logger);
405  $loggingServices->expects($this->any())
406  ->method('__call')
407  ->willReturn($logger);
408 
409  $dic = new class($loggingServices) extends Container {
411  private $loggingServices;
412 
417  public function __construct(LoggingServices $loggingServices)
418  {
419  $this->loggingServices = $loggingServices;
421  }
422 
426  public function logger()
427  {
428  return $this->loggingServices;
429  }
430  };
431 
432  $ctrl = $this
433  ->getMockBuilder(ilCtrl::class)
434  ->disableOriginalConstructor()
435  ->onlyMethods(['getCmdClass', 'getCmd'])
436  ->getMock();
437 
438  $ctrl
439  ->expects($this->any())
440  ->method('getCmdClass')
441  ->willReturn('ilDashboardGUI');
442 
443  $ctrl
444  ->expects($this->any())
445  ->method('getCmd')
446  ->willReturn('');
447  $dic['ilCtrl'] = function () use ($ctrl) {
448  return $ctrl;
449  };
450 
451  $request = $this
452  ->getMockBuilder(ServerRequestInterface::class)
453  ->disableOriginalConstructor()
454  ->getMock();
455  $http = $this
456  ->getMockBuilder(GlobalHttpState::class)
457  ->disableOriginalConstructor()
458  ->getMock();
459 
460  $http->expects($this->any())
461  ->method('request')
462  ->willReturn($request);
463  $dic['http'] = function () use ($http) {
464  return $http;
465  };
466 
467  $evaluator = $this
468  ->getMockBuilder(ilTermsOfServiceDocumentEvaluation::class)
469  ->getMock();
470  $dic['tos.document.evaluator'] = function () use ($evaluator) {
471  return $evaluator;
472  };
473 
474  $criterionFactory = $this
475  ->getMockBuilder(ilTermsOfServiceCriterionTypeFactoryInterface::class)
476  ->getMock();
477  $dic['tos.criteria.type.factory'] = function () use ($criterionFactory) {
478  return $criterionFactory;
479  };
480 
481  $service = $this
482  ->getMockBuilder(ilTermsOfServiceHelper::class)
483  ->disableOriginalConstructor()
484  ->getMock();
485  $service->expects($this->once())
486  ->method('hasToResignAcceptance')
487  ->willReturn(true);
488  $service->expects($this->once())
489  ->method('resetAcceptance');
490  $dic['tos.service'] = function () use ($service) {
491  return $service;
492  };
493 
494  $user = $this
495  ->getMockBuilder(ilObjUser::class)
496  ->disableOriginalConstructor()
497  ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
498  ->getMock();
499  $user
500  ->expects($this->any())
501  ->method('hasToAcceptTermsOfService')
502  ->willReturn(false);
503  $user
504  ->expects($this->any())
505  ->method('checkTimeLimit')
506  ->willReturn(true);
507  $user
508  ->expects($this->any())
509  ->method('hasToAcceptTermsOfServiceInSession')
510  ->willReturn(true);
511  $dic['ilUser'] = function () use ($user) {
512  return $user;
513  };
514 
515  $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
516 
517  $this->assertTrue($requestInterceptor->shouldInterceptRequest());
518  }
519 }
Provides fluid interface to RBAC services.
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:18
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilTermsOfServiceBaseTest.
$service
Definition: result.php:17
$http
Definition: raiseError.php:7
__construct(Container $dic, ilPlugin $plugin)