ILIAS  release_7 Revision v7.30-3-g800a261c036
ilObjContainerDAVTest.php
Go to the documentation of this file.
1<?php
2
3use \PHPUnit\Framework\TestCase;
4use \Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
5
6require_once 'ilObjDummyDAV.php';
7
8class ilObjContainerDAVTest extends TestCase
9{
10 use MockeryPHPUnitIntegration;
11
13 protected $ref_id;
14
16 protected $mocked_obj;
17
20
23
25 protected $container_dav;
26
30 protected function setUp() : void
31 {
32 $this->ref_id = 100;
33 $this->mocked_obj = \Mockery::mock('ilContainer');
34 $this->mocked_obj->shouldReceive(['getRefId' => $this->ref_id]);
35
36 $this->mocked_repo_helper = \Mockery::mock('ilWebDAVRepositoryHelper');
37
38 $this->mocked_dav_helper = \Mockery::mock('ilWebDAVObjDAVHelper');
39
40 $this->container_dav = $this->setUpContainerDAV($this->mocked_obj, $this->mocked_repo_helper, $this->mocked_dav_helper);
41
42 parent::setUp();
43 }
44
49 {
51 // Dummy implementation
52 public function getChildCollectionType()
53 {
54 return null;
55 }
56 };
57 }
58
64 {
65 // Arrange
66 $number_of_children = 5;
67 $number_of_davable_children = $number_of_children;
68
69 $children_ref_ids = array();
70 for ($i = 101; $i < $number_of_children + 101; $i++) {
71 $children_ref_ids[] = $i;
72 $children_titles[] = "abc" . $i;
73 }
74
75 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
76 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
77 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturn(true);
78 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
79 $this->mocked_dav_helper->shouldReceive('createDAVObjectForRefId')->andReturn(new ilObjDummyDAV());
80
81 // Act
82 $dav_children = $this->container_dav->getChildren();
83
84 // Assert
85 $this->assertTrue(count($dav_children) == $number_of_children);
86 }
87
97 {
98 // Arrange
99 $number_of_children = 5;
100 $number_of_davable_children = 0;
101
102 $children_ref_ids = array();
103 $children_titles = array();
104 for ($i = 101; $i < $number_of_children + 101; $i++) {
105 $children_ref_ids[] = $i;
106 $children_titles[] = "abc" . $i;
107 }
108
109 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
110 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(false);
111 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
112 $this->mocked_repo_helper->shouldReceive('getObjectTypeFromRefId')->andReturnValues($children_ref_ids);
113 $this->mocked_dav_helper->shouldReceive('isDAVableObjType')->andReturn(false);
114
115 // Act
116 $dav_children = $this->container_dav->getChildren();
117
118 // Assert
119 $this->assertTrue(count($dav_children) == $number_of_davable_children);
120 }
121
127 {
128 // Arrange
129 $number_of_children = 5;
130 $number_of_davable_children = 0;
131
132 $children_ref_ids = array();
133 $children_titles = array();
134 for ($i = 101; $i < $number_of_children + 101; $i++) {
135 $children_ref_ids[] = $i;
136 $children_titles[] = "abc" . $i;
137 }
138
139 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
140 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
141 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
142 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
143 if ($permission == 'visible' || $permission == 'read') {
144 return false; // No Visible and no read
145 } else {
146 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
147 }
148 });
149
150 // Act
151 $dav_children = $this->container_dav->getChildren();
152
153 // Assert
154 $this->assertTrue(count($dav_children) == $number_of_davable_children);
155 }
156
162 {
163 // Arrange
164 $number_of_children = 5;
165 $number_of_davable_children = 0;
166
167 $children_ref_ids = array();
168 $children_titles = array();
169 for ($i = 101; $i < $number_of_children + 101; $i++) {
170 $children_ref_ids[] = $i;
171 $children_titles[] = "abc" . $i;
172 }
173
174 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
175 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
176 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
177 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
178 if ($permission == 'visible') {
179 return true; // With visible
180 } elseif ($permission == 'read') {
181 return false; // No Read
182 } else {
183 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
184 }
185 });
186
187 // Act
188 $dav_children = $this->container_dav->getChildren();
189
190 // Assert
191 $this->assertTrue(count($dav_children) == $number_of_davable_children);
192 }
193
199 {
200 // Arrange
201 $number_of_children = 5;
202 $number_of_davable_children = 0;
203
204 $children_ref_ids = array();
205 $children_titles = array();
206 for ($i = 101; $i < $number_of_children + 101; $i++) {
207 $children_ref_ids[] = $i;
208 $children_titles[] = "abc" . $i;
209 }
210
211 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
212 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
213 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
214 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
215 if ($permission == 'visible') {
216 return false; // No Visible
217 } elseif ($permission == 'read') {
218 return true; // With Read
219 } else {
220 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
221 }
222 });
223
224 // Act
225 $dav_children = $this->container_dav->getChildren();
226
227 // Assert
228 $this->assertTrue(count($dav_children) == $number_of_davable_children);
229 }
230
236 {
237 // Arrange
238 $number_of_children = 5;
239 $number_of_davable_children = 3;
240
241 $children_ref_ids = array();
242 $children_titles = array();
243 for ($i = 101; $i < $number_of_children + 101; $i++) {
244 $children_ref_ids[] = $i;
245 $children_titles[] = "abc" . $i;
246 }
247
248 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
249 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true, true, true, false, false);
250 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturnValues($children_titles);
251 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturn(true);
252 $this->mocked_repo_helper->shouldReceive('getObjectTypeFromRefId')->andReturn(false);
253 $this->mocked_dav_helper->shouldReceive('isDAVableObjType')->andReturn(false);
254 $this->mocked_dav_helper->shouldReceive('createDAVObjectForRefId')->andReturn(new ilObjDummyDAV());
255
256 // Act
257 $dav_children = $this->container_dav->getChildren();
258
259 // Assert
260 $this->mocked_dav_helper->shouldHaveReceived('isDAVableObject')->times(5);
261 $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->times(6);
262 $this->assertTrue(count($dav_children) == $number_of_davable_children);
263 }
264
270 {
271 // Arrange
272 $number_of_children = 5;
273
274 $children_ref_ids = array();
275 $children_titles = array();
276 for ($i = 101; $i < $number_of_children + 101; $i++) {
277 $children_ref_ids[] = $i;
278 $children_titles[] = "abc" . $i;
279 }
280
281 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
282 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(false);
283
284 // Act
285 $child_exists = $this->container_dav->childExists('dummy');
286
287 // Assert
288 $this->assertTrue(!$child_exists);
289 }
290
296 {
297 // Arrange
298 $number_of_children = 5;
299 $searched_title = 'dummy';
300
301 $children_ref_ids = array();
302 for ($i = 101; $i < $number_of_children + 101; $i++) {
303 $children_ref_ids[] = $i;
304 }
305
306 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
307 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
308 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('t1', 't2', $searched_title, 't4', 't5');
309 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
310 if ($permission == 'visible' || $permission == 'read') {
311 return false; // No Visible
312 } else {
313 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
314 }
315 });
316
317 // Act
318 $child_exists = $this->container_dav->childExists($searched_title);
319
320 // Assert
321 $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->once();
322 $this->assertTrue(!$child_exists);
323 }
324
330 {
331 // Arrange
332 $number_of_children = 5;
333 $searched_title = 'dummy';
334
335 $children_ref_ids = array();
336 for ($i = 101; $i < $number_of_children + 101; $i++) {
337 $children_ref_ids[] = $i;
338 }
339
340 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
341 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
342 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('t1', 't2', $searched_title, 't4', 't5');
343 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
344 if ($permission == 'visible') {
345 return true; // With Visible
346 } elseif ($permission == 'read') {
347 return false; // No Read
348 } else {
349 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
350 }
351 });
352
353 // Act
354 $child_exists = $this->container_dav->childExists($searched_title);
355
356 // Assert
357 $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->twice();
358 $this->assertTrue(!$child_exists);
359 }
360
366 {
367 // Arrange
368 $number_of_children = 5;
369 $searched_title = 'dummy';
370
371 $children_ref_ids = array();
372 for ($i = 101; $i < $number_of_children + 101; $i++) {
373 $children_ref_ids[] = $i;
374 }
375
376 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
377 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
378 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('t1', 't2', $searched_title, 't4', 't5');
379 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturnUsing(function ($permission, $ref) {
380 if ($permission == 'visible') {
381 return false; // No Visible
382 } elseif ($permission == 'read') {
383 return true; // With Read
384 } else {
385 throw new UnexpectedValueException($permission . ' was not expected as argument in this test case');
386 }
387 });
388
389 // Act
390 $child_exists = $this->container_dav->childExists($searched_title);
391
392 // Assert
393 $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->once();
394 $this->assertTrue(!$child_exists);
395 }
396
402 {
403 // Arrange
404 $number_of_children = 5;
405 $searched_title = 'dummy';
406
407 $children_ref_ids = array();
408 for ($i = 101; $i < $number_of_children + 101; $i++) {
409 $children_ref_ids[] = $i;
410 }
411
412 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
413 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
414 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('1', '2', $searched_title, '4', '5');
415 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturn(true);
416
417 // Act
418 $child_exists = $this->container_dav->childExists($searched_title);
419
420 // Assert
421 $this->assertTrue($child_exists
422 && $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->twice());
423 }
424
430 {
431 // Arrange
432 $number_of_children = 5;
433 $searched_title = 'dummy';
434 $dummy_obj_dav = new ilObjDummyDAV();
435
436 $children_ref_ids = array();
437 for ($i = 101; $i < $number_of_children + 101; $i++) {
438 $children_ref_ids[] = $i;
439 }
440
441 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
442 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
443 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('1', '2', $searched_title, '4', '5');
444 $this->mocked_repo_helper->shouldReceive('checkAccess')->andReturn(true);
445 $this->mocked_dav_helper->shouldReceive('createDAVObjectForRefId')->andReturn($dummy_obj_dav);
446
447 // Act
448 $returned_child = $this->container_dav->getChild($searched_title);
449
450 // Assert
451 $this->mocked_repo_helper->shouldHaveReceived('checkAccess')->twice();
452 $this->assertTrue($returned_child === $dummy_obj_dav);
453 }
454
460 {
461 // Arrange
462 $number_of_children = 5;
463 $searched_title = 'dummy';
464 $exception_thrown = false;
465
466 $children_ref_ids = array();
467 for ($i = 101; $i < $number_of_children + 101; $i++) {
468 $children_ref_ids[] = $i;
469 }
470
471 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
472 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(false);
473
474 // Act
475 try {
476 $this->container_dav->getChild($searched_title);
477 } catch (\Sabre\DAV\Exception\NotFound $e) {
478 $exception_thrown = true;
479 }
480
481 // Assert
482 $this->assertTrue($exception_thrown);
483 }
484
490 {
491 // Arrange
492 $number_of_children = 5;
493 $searched_title = 'dummy';
494
495 $children_ref_ids = array();
496 for ($i = 101; $i < $number_of_children + 101; $i++) {
497 $children_ref_ids[] = $i;
498 }
499
500 $this->mocked_repo_helper->shouldReceive('getChildrenOfRefId')->andReturn($children_ref_ids);
501 $this->mocked_dav_helper->shouldReceive('isDAVableObject')->andReturn(true);
502 $this->mocked_repo_helper->shouldReceive('getObjectTitleFromRefId')->andReturn('1', '2', '3', '4', '5');
503
504 // Act
505 try {
506 $this->container_dav->getChild($searched_title);
507 } catch (\Sabre\DAV\Exception\NotFound $e) {
508 $exception_thrown = true;
509 }
510
511 // Assert
512 $this->assertTrue($exception_thrown);
513 }
514
520 {
521 // Arrange
522 $file_title = 'some_file.txt';
523
524 $this->mocked_repo_helper->shouldReceive('checkCreateAccessForType')->andReturn(false);
525
526 // Act
527 try {
528 $this->container_dav->createFile($file_title);
529 } catch (\Sabre\DAV\Exception\Forbidden $e) {
530 if ($e->getMessage() == 'No write access') {
531 $exception_thrown = true;
532 }
533 }
534
535 // Assert
536 $this->assertTrue($exception_thrown);
537 }
538
544 {
545 // Arrange
546 $file_title = 'some_file.exe';
547 $exception_thrown = false;
548
549 $this->mocked_repo_helper->shouldReceive('checkCreateAccessForType')->andReturn(true);
550 $this->mocked_dav_helper->shouldReceive('isValidFileNameWithValidFileExtension')->andReturn(false);
551
552 // Act
553 try {
554 $this->container_dav->createFile($file_title);
555 } catch (\Sabre\DAV\Exception\Forbidden $e) {
556 if ($e->getMessage() == 'Invalid file name or file extension') {
557 $exception_thrown = true;
558 }
559 }
560
561 // Assert
562 $this->assertTrue($exception_thrown);
563 }
564}
An exception for terminatinating execution or to throw for unit testing.
GetChildren_WithVisibleNoReadPermissionToObjects_ReturnEmptyArray()
ChildExists_ChildExistsButUserHasOnlyReadPermission_returnFalse()
setUpContainerDAV($mocked_obj, $mocked_repo_helper, $mocked_dav_helper)
Setup instance for ilObjectDAV.
GetChildren_NoVisibleNoReadPermissionToObjects_ReturnEmptyArray()
GetChildren_NoDavableObjects_ReturnEmptyArray()
Important parameters: isDAVableObject = true checkAccess = false -> we test the behavior for no acces...
GetChildren_NoVisibleWithReadPermissionToObjects_ReturnEmptyArray()
ChildExists_ChildExistsButUserHasNoVisibleAndNoReadPermission_returnFalse()
GetChildren_MixedWithNonDavableObjects_ReturnOnlyDavableObjects()
ChildExists_ChildExistsButUserHasOnlyVisiblePermission_returnFalse()
Class ilObjContainerDAV.
This is just a dummy class for unit testing.
$i
Definition: metadata.php:24