ILIAS  release_7 Revision v7.30-3-g800a261c036
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
8use Psr\Http\Message\ServerRequestInterface;
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}
An exception for terminatinating execution or to throw for unit testing.
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:19
Provides fluid interface to RBAC services.
Class ilTermsOfServiceBaseTest.
Interface GlobalHttpState.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$http
Definition: raiseError.php:7
$service
Definition: result.php:17