ILIAS  release_8 Revision v8.24
ilTermsOfServiceStartUpStepTest.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
24use Psr\Http\Message\ServerRequestInterface;
25
31{
33 {
34 $dic = new Container();
35
36 $ctrl = $this->createMock(ilCtrlInterface::class);
37
38 $ctrl
39 ->method('getCmdClass')
40 ->willReturn(ilDashboardGUI::class);
41
42 $ctrl
43 ->method('getCmd')
44 ->willReturn('');
45
46 $ctrl
47 ->expects($this->once())
48 ->method('redirectToURL');
49 $dic['ilCtrl'] = static function () use ($ctrl): ilCtrlInterface {
50 return $ctrl;
51 };
52
53 $user = $this
54 ->getMockBuilder(ilObjUser::class)
55 ->disableOriginalConstructor()
56 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
57 ->getMock();
58
59 $user
60 ->expects($this->atLeast(1))
61 ->method('hasToAcceptTermsOfService')
62 ->willReturn(true);
63
64 $user
65 ->method('checkTimeLimit')
66 ->willReturn(true);
67
68 $user
69 ->expects($this->atLeast(1))
70 ->method('hasToAcceptTermsOfServiceInSession')
71 ->willReturn(true);
72 $dic['ilUser'] = static function () use ($user): ilObjUser {
73 return $user;
74 };
75
76 $request = $this->createMock(ServerRequestInterface::class);
77 $http = $this->createMock(GlobalHttpState::class);
78
79 $http
80 ->method('request')
81 ->willReturn($request);
82 $dic['http'] = static function () use ($http): GlobalHttpState {
83 return $http;
84 };
85
86 $evaluator = $this->createMock(ilTermsOfServiceDocumentEvaluation::class);
87 $dic['tos.document.evaluator'] = static function () use ($evaluator): ilTermsOfServiceDocumentEvaluation {
88 return $evaluator;
89 };
90
91 $criterionFactory = $this->createMock(ilTermsOfServiceCriterionTypeFactoryInterface::class);
92 $dic['tos.criteria.type.factory'] = static function () use (
93 $criterionFactory
95 return $criterionFactory;
96 };
97
98 $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
99
100 $this->assertTrue($requestInterceptor->shouldInterceptRequest());
101 $this->assertTrue($requestInterceptor->shouldStoreRequestTarget());
102 $requestInterceptor->execute();
103 }
104
106 {
107 $dic = new Container();
108
109 $ctrl = $this->createMock(ilCtrlInterface::class);
110
111 $ctrl
112 ->expects($this->atLeast(1))
113 ->method('getCmdClass')
114 ->willReturn(ilStartUpGUI::class);
115
116 $ctrl
117 ->expects($this->atLeast(1))
118 ->method('getCmd')
119 ->willReturn('getacceptance');
120 $dic['ilCtrl'] = static function () use ($ctrl): ilCtrlInterface {
121 return $ctrl;
122 };
123
124 $user = $this
125 ->getMockBuilder(ilObjUser::class)
126 ->disableOriginalConstructor()
127 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
128 ->getMock();
129
130 $user
131 ->method('hasToAcceptTermsOfService')
132 ->willReturn(true);
133
134 $user
135 ->method('checkTimeLimit')
136 ->willReturn(true);
137
138 $user
139 ->method('hasToAcceptTermsOfServiceInSession')
140 ->willReturn(true);
141 $dic['ilUser'] = static function () use ($user): ilObjUser {
142 return $user;
143 };
144
145 $request = $this->createMock(ServerRequestInterface::class);
146 $http = $this->createMock(GlobalHttpState::class);
147
148 $http
149 ->method('request')
150 ->willReturn($request);
151 $dic['http'] = static function () use ($http): GlobalHttpState {
152 return $http;
153 };
154
155 $evaluator = $this->createMock(ilTermsOfServiceDocumentEvaluation::class);
156 $dic['tos.document.evaluator'] = static function () use ($evaluator): ilTermsOfServiceDocumentEvaluation {
157 return $evaluator;
158 };
159
160 $criterionFactory = $this->createMock(ilTermsOfServiceCriterionTypeFactoryInterface::class);
161 $dic['tos.criteria.type.factory'] = static function () use (
162 $criterionFactory
164 return $criterionFactory;
165 };
166
167 $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
168
169 $this->assertFalse($requestInterceptor->shouldInterceptRequest());
170 }
171
172 public function userProvider(): array
173 {
174 $user1 = $this
175 ->getMockBuilder(ilObjUser::class)
176 ->disableOriginalConstructor()
177 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
178 ->getMock();
179
180 $user1
181 ->method('hasToAcceptTermsOfService')
182 ->willReturn(false);
183
184 $user1
185 ->method('checkTimeLimit')
186 ->willReturn(true);
187
188 $user1
189 ->method('hasToAcceptTermsOfServiceInSession')
190 ->willReturn(true);
191
192 $user2 = $this
193 ->getMockBuilder(ilObjUser::class)
194 ->disableOriginalConstructor()
195 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
196 ->getMock();
197
198 $user2
199 ->method('hasToAcceptTermsOfService')
200 ->willReturn(true);
201
202 $user2
203 ->method('checkTimeLimit')
204 ->willReturn(false);
205
206 $user2
207 ->method('hasToAcceptTermsOfServiceInSession')
208 ->willReturn(true);
209
210 $user3 = $this
211 ->getMockBuilder(ilObjUser::class)
212 ->disableOriginalConstructor()
213 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
214 ->getMock();
215
216 $user3
217 ->method('hasToAcceptTermsOfService')
218 ->willReturn(true);
219
220 $user3
221 ->method('checkTimeLimit')
222 ->willReturn(true);
223
224 $user3
225 ->method('hasToAcceptTermsOfServiceInSession')
226 ->willReturn(false);
227
228 return [
229 'User 1' => [$user1],
230 'User 2' => [$user2],
231 'User 3' => [$user3],
232 ];
233 }
234
240 {
241 $logger = $this
242 ->getMockBuilder(ilLogger::class)
243 ->disableOriginalConstructor()
244 ->getMock();
245
246 $loggingServices = $this
247 ->getMockBuilder(LoggingServices::class)
248 ->disableOriginalConstructor()
249 ->onlyMethods(['root', '__call'])
250 ->getMock();
251 $loggingServices
252 ->method('root')
253 ->willReturn($logger);
254 $loggingServices
255 ->method('__call')
256 ->willReturn($logger);
257
258 $dic = new class ($loggingServices) extends Container {
259 private LoggingServices $loggingServices;
260
261 public function __construct(LoggingServices $loggingServices)
262 {
263 $this->loggingServices = $loggingServices;
265 }
266
267 public function logger(): LoggingServices
268 {
269 return $this->loggingServices;
270 }
271 };
272
273 $ctrl = $this->createMock(ilCtrlInterface::class);
274
275 $ctrl
276 ->method('getCmdClass')
277 ->willReturn(ilDashboardGUI::class);
278
279 $ctrl
280 ->method('getCmd')
281 ->willReturn('');
282 $dic['ilCtrl'] = static function () use ($ctrl): ilCtrlInterface {
283 return $ctrl;
284 };
285
286 $request = $this->createMock(ServerRequestInterface::class);
287 $http = $this->createMock(GlobalHttpState::class);
288
289 $http
290 ->method('request')
291 ->willReturn($request);
292 $dic['http'] = static function () use ($http): GlobalHttpState {
293 return $http;
294 };
295
296 $evaluator = $this->createMock(ilTermsOfServiceDocumentEvaluation::class);
297 $dic['tos.document.evaluator'] = static function () use ($evaluator): ilTermsOfServiceDocumentEvaluation {
298 return $evaluator;
299 };
300
301 $criterionFactory = $this->createMock(ilTermsOfServiceCriterionTypeFactoryInterface::class);
302 $dic['tos.criteria.type.factory'] = static function () use (
303 $criterionFactory
305 return $criterionFactory;
306 };
307
308 $service = $this
309 ->getMockBuilder(ilTermsOfServiceHelper::class)
310 ->disableOriginalConstructor()
311 ->getMock();
313 ->method('hasToResignAcceptance')
314 ->willReturn(false);
315 $dic['tos.service'] = static function () use ($service): ilTermsOfServiceHelper {
316 return $service;
317 };
318
319 $dic['ilUser'] = static function () use ($user): ilObjUser {
320 return $user;
321 };
322
323 $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
324
325 $this->assertFalse($requestInterceptor->shouldInterceptRequest());
326 }
327
332 {
333 $logger = $this
334 ->getMockBuilder(ilLogger::class)
335 ->disableOriginalConstructor()
336 ->getMock();
337
338 $loggingServices = $this
339 ->getMockBuilder(LoggingServices::class)
340 ->disableOriginalConstructor()
341 ->onlyMethods(['root', '__call'])
342 ->getMock();
343 $loggingServices
344 ->method('root')
345 ->willReturn($logger);
346 $loggingServices
347 ->method('__call')
348 ->willReturn($logger);
349
350 $dic = new class ($loggingServices) extends Container {
351 private LoggingServices $loggingServices;
352
353 public function __construct(LoggingServices $loggingServices)
354 {
355 $this->loggingServices = $loggingServices;
357 }
358
359 public function logger(): LoggingServices
360 {
361 return $this->loggingServices;
362 }
363 };
364
365 $ctrl = $this->createMock(ilCtrlInterface::class);
366
367 $ctrl
368 ->method('getCmdClass')
369 ->willReturn(ilDashboardGUI::class);
370
371 $ctrl
372 ->method('getCmd')
373 ->willReturn('');
374 $dic['ilCtrl'] = static function () use ($ctrl): ilCtrlInterface {
375 return $ctrl;
376 };
377
378 $request = $this->createMock(ServerRequestInterface::class);
379 $http = $this->createMock(GlobalHttpState::class);
380
381 $http
382 ->method('request')
383 ->willReturn($request);
384 $dic['http'] = static function () use ($http): GlobalHttpState {
385 return $http;
386 };
387
388 $evaluator = $this->createMock(ilTermsOfServiceDocumentEvaluation::class);
389 $dic['tos.document.evaluator'] = static function () use ($evaluator): ilTermsOfServiceDocumentEvaluation {
390 return $evaluator;
391 };
392
393 $criterionFactory = $this->createMock(ilTermsOfServiceCriterionTypeFactoryInterface::class);
394 $dic['tos.criteria.type.factory'] = static function () use (
395 $criterionFactory
397 return $criterionFactory;
398 };
399
400 $service = $this
401 ->getMockBuilder(ilTermsOfServiceHelper::class)
402 ->disableOriginalConstructor()
403 ->getMock();
404 $service->expects($this->once())
405 ->method('hasToResignAcceptance')
406 ->willReturn(true);
407 $service->expects($this->once())
408 ->method('resetAcceptance');
409 $dic['tos.service'] = static function () use ($service): ilTermsOfServiceHelper {
410 return $service;
411 };
412
413 $user = $this
414 ->getMockBuilder(ilObjUser::class)
415 ->disableOriginalConstructor()
416 ->onlyMethods(['hasToAcceptTermsOfService', 'checkTimeLimit', 'hasToAcceptTermsOfServiceInSession'])
417 ->getMock();
418 $user
419 ->method('hasToAcceptTermsOfService')
420 ->willReturn(false);
421 $user
422 ->method('checkTimeLimit')
423 ->willReturn(true);
424 $user
425 ->method('hasToAcceptTermsOfServiceInSession')
426 ->willReturn(true);
427 $dic['ilUser'] = static function () use ($user): ilObjUser {
428 return $user;
429 };
430
431 $requestInterceptor = new ilTermsOfServiceAcceptanceStartUpStep($dic);
432
433 $this->assertTrue($requestInterceptor->shouldInterceptRequest());
434 }
435}
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:32
Provides fluid interface to LoggingServices.
User class.
Class ilTermsOfServiceBaseTest.
Class ilTermsOfServiceHelper.
Class ilTermsOfServiceStartUpStepTest.
testUserShouldNotBeForcedToAcceptTermsOfServiceWhenAlreadyDone(ilObjUser $user)
@dataProvider userProvider
testUserShouldBeForcedToResignTermsOfService()
@dataProvider userProvider
Interface GlobalHttpState.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Interface ilTermsOfServiceDocumentEvaluation.
$service
Definition: ltiservices.php:43
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$http
Definition: raiseError.php:7