ILIAS  trunk Revision v11.0_alpha-2638-g80c1d007f79
AccessQuestionImageTest.php
Go to the documentation of this file.
1 <?php
2 
19 declare(strict_types=1);
20 
21 namespace ILIAS\Test\Access\test;
22 
26 
27 class AccessQuestionImageTest extends TestCase
28 {
29  public function testConstruct(): void
30  {
31  $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
32  $this->assertInstanceOf(AccessQuestionImage::class, new AccessQuestionImage($readable));
33  }
34 
35  #[\PHPUnit\Framework\Attributes\DataProvider('invalidPaths')]
36  public function testIsPermittedWithInvalidPath(string $path): void
37  {
38  $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
39 
40  $instance = new AccessQuestionImage($readable);
41 
42  $this->assertFalse($instance->isPermitted($path)->isOk());
43  }
44 
45  public static function invalidPaths(): array
46  {
47  return [
48  ['foo'],
49  ['/assessment/12/images/foo.png'],
50  ['/assessment/12/34/images/foo/bar.png'],
51  ['/assessment/12/ab/images/foo.png'],
52  ['/assessment/ab/12/images/foo.png'],
53  ['assessment/12/34/images/foo.png'],
54  ];
55  }
56 
57  #[\PHPUnit\Framework\Attributes\DataProvider('isPermittedProvider')]
58  public function testIsPermittedWithValidPath(bool $is_readable): void
59  {
60  $readable = $this->getMockBuilder(Readable::class)->disableOriginalConstructor()->getMock();
61 
62  $readable->method('objectId')->with(6709)->willReturn($is_readable);
63 
64  $instance = new AccessQuestionImage($readable);
65  $result = $instance->isPermitted('/assessment/6709/389/images/foo.png');
66  $this->assertTrue($result->isOk());
67  $this->assertSame($is_readable, $result->value());
68  }
69 
70  public static function isPermittedProvider(): array
71  {
72  return [
73  'With readable object path.' => [true],
74  'Without readable object path.' => [false],
75  ];
76  }
77 }
$path
Definition: ltiservices.php:29