ILIAS  trunk Revision v11.0_alpha-1723-g8e69f309bab
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilServicesFileServicesTest Class Reference
+ Inheritance diagram for ilServicesFileServicesTest:
+ Collaboration diagram for ilServicesFileServicesTest:

Public Member Functions

 testSanitizing ()
 
 testBlacklistedUpload ()
 
 testBlacklistedUploadWithPermission ()
 
 testRenamingNonWhitelistedFile ()
 
 testActualWhitelist ()
 
 testFileNamePolicyOnDownloading ()
 

Protected Member Functions

 setUp ()
 
 tearDown ()
 

Private Attributes

Container $dic_backup
 
ilDBInterface $db_mock = null
 

Detailed Description

Definition at line 31 of file ilServicesFileServicesTest.php.

Member Function Documentation

◆ setUp()

ilServicesFileServicesTest::setUp ( )
protected

Definition at line 39 of file ilServicesFileServicesTest.php.

References $DIC, and null.

39  : void
40  {
41  global $DIC;
42  $this->dic_backup = is_object($DIC) ? clone $DIC : null;
43 
44  $DIC = new Container();
45  $DIC['ilDB'] = $this->db_mock = $this->createMock(ilDBInterface::class);
46  }
Customizing of pimple-DIC for ILIAS.
Definition: Container.php:35
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
global $DIC
Definition: shib_login.php:22

◆ tearDown()

ilServicesFileServicesTest::tearDown ( )
protected

Definition at line 48 of file ilServicesFileServicesTest.php.

References $DIC, and $dic_backup.

48  : void
49  {
50  global $DIC;
51  $DIC = $this->dic_backup;
52  }
global $DIC
Definition: shib_login.php:22

◆ testActualWhitelist()

ilServicesFileServicesTest::testActualWhitelist ( )

Definition at line 130 of file ilServicesFileServicesTest.php.

130  : void
131  {
132  $settings_mock = $this->createMock(ilSetting::class);
133  $ini_mock = $this->createMock(ilIniFile::class);
134 
135  $ref = new stdClass();
136  $ref->ref_id = 32;
137  $this->db_mock->expects($this->once())
138  ->method('fetchObject')
139  ->willReturn($ref);
140 
141  $this->db_mock->expects($this->once())
142  ->method('fetchAssoc')
143  ->willReturn([]);
144 
145  $default_whitelist = include __DIR__ . "/../defaults/default_whitelist.php";
146 
147  // Blacklist
148  $consecutive = [
149  ['suffix_custom_expl_black', 'bl001,bl002'], // blacklisted
150  ['suffix_repl_additional', 'docx,doc'], // remove from whitelist
151  ['suffix_custom_white_list', 'wl001,wl002'] // add whitelist
152  ];
153  $settings_mock
154  ->expects($this->exactly(3))
155  ->method('get')
156  ->willReturnCallback(
157  function ($k) use (&$consecutive) {
158  [$expected, $return] = array_shift($consecutive);
159  $this->assertEquals($expected, $k);
160  return $return;
161  }
162  );
163 
164  $settings = new ilFileServicesSettings($settings_mock, $ini_mock, $this->db_mock);
165  $this->assertEquals(['bl001', 'bl002'], $settings->getBlackListedSuffixes());
166  $this->assertEquals(['bl001', 'bl002'], $settings->getProhibited());
167  $this->assertEquals($default_whitelist, $settings->getDefaultWhitelist());
168  $this->assertEquals(['docx', 'doc'], $settings->getWhiteListNegative());
169  $this->assertEquals(['wl001', 'wl002'], $settings->getWhiteListPositive());
170 
171  $whitelist = array_merge(
172  array_diff($default_whitelist, ['docx', 'doc']),
173  ['wl001', 'wl002', '']
174  );
175  $diff = array_diff($whitelist, $settings->getWhiteListedSuffixes());
176 
177  $this->assertEquals([], $diff);
178  $this->assertEquals(0, count($diff));
179  }

◆ testBlacklistedUpload()

ilServicesFileServicesTest::testBlacklistedUpload ( )

Definition at line 67 of file ilServicesFileServicesTest.php.

67  : void
68  {
69  $settings = $this->createMock(ilFileServicesSettings::class);
70  $settings->expects($this->once())
71  ->method('getBlackListedSuffixes')
72  ->willReturn(['pdf']);
73 
74  $settings->expects($this->once())
75  ->method('isByPassAllowedForCurrentUser')
76  ->willReturn(false);
77 
78  $stream = $this->createMock(FileStream::class);
79  $meta = new Metadata('filename.pdf', 42, 'application/pdf');
80 
81  $processor = new ilFileServicesPreProcessor(
82  $settings,
83  'the reason'
84  );
85  // is ok since user has permission
86  $status = $processor->process($stream, $meta);
87  $this->assertEquals(ProcessingStatus::REJECTED, $status->getCode());
88  }

◆ testBlacklistedUploadWithPermission()

ilServicesFileServicesTest::testBlacklistedUploadWithPermission ( )

Definition at line 90 of file ilServicesFileServicesTest.php.

90  : void
91  {
92  $settings = $this->createMock(ilFileServicesSettings::class);
93  $settings->expects($this->once())
94  ->method('getBlackListedSuffixes')
95  ->willReturn(['pdf']);
96 
97  $settings->expects($this->once())
98  ->method('isByPassAllowedForCurrentUser')
99  ->willReturn(true);
100 
101  $stream = $this->createMock(FileStream::class);
102  $meta = new Metadata('filename.pdf', 42, 'application/pdf');
103 
104  $processor = new ilFileServicesPreProcessor(
105  $settings,
106  'the reason'
107  );
108  // is ok since user has permission
109  $status = $processor->process($stream, $meta);
110  $this->assertEquals(ProcessingStatus::OK, $status->getCode());
111  }

◆ testFileNamePolicyOnDownloading()

ilServicesFileServicesTest::testFileNamePolicyOnDownloading ( )

Definition at line 183 of file ilServicesFileServicesTest.php.

183  : void
184  {
185  $settings = $this->createMock(ilFileServicesSettings::class);
186 
187  $settings->expects($this->atLeastOnce())
188  ->method('getBlackListedSuffixes')
189  ->willReturn(['mp3']);
190 
191  $settings->expects($this->atLeastOnce())
192  ->method('getWhiteListedSuffixes')
193  ->willReturn(['pdf', 'png', 'mp3']);
194 
195  $settings->expects($this->atLeastOnce())
196  ->method('isASCIIConvertionEnabled')
197  ->willReturn(true);
198 
199  $policy = new ilFileServicesPolicy($settings);
200  $this->assertEquals('testmp3.sec', $policy->prepareFileNameForConsumer('test.mp3'));
201  $this->assertEquals('test.png', $policy->prepareFileNameForConsumer('test.png'));
202  $this->assertEquals('test.pdf', $policy->prepareFileNameForConsumer('test.pdf'));
203  $this->assertEquals('aeaeaeaeaeaeaeaeae.pdf', $policy->prepareFileNameForConsumer('äääääääää.pdf'));
204  $this->assertEquals('oeoeoeoeoeoeoeoeoe.pdf', $policy->prepareFileNameForConsumer('ööööööööö.pdf'));
205  $this->assertEquals('ueueueueueueueueue.pdf', $policy->prepareFileNameForConsumer('üüüüüüüüü.pdf'));
206  }
Class ilFileServicesPolicy.

◆ testRenamingNonWhitelistedFile()

ilServicesFileServicesTest::testRenamingNonWhitelistedFile ( )

Definition at line 113 of file ilServicesFileServicesTest.php.

113  : void
114  {
115  $settings = $this->createMock(ilFileServicesSettings::class);
116  $settings->expects($this->once())
117  ->method('getWhiteListedSuffixes')
118  ->willReturn(['pdf', 'png', 'jpg']);
119 
120  $sanitizer = new ilFileServicesFilenameSanitizer($settings);
121 
122  $sane_filename = 'bellerophon.pdf';
123  $this->assertEquals($sane_filename, $sanitizer->sanitize($sane_filename));
124 
125  $insane_filename = 'bellerophon.docx';
126  $this->assertNotEquals($insane_filename, $sanitizer->sanitize($insane_filename));
127  $this->assertEquals('bellerophondocx.sec', $sanitizer->sanitize($insane_filename));
128  }
Class ilFileServicesFilenameSanitizer.

◆ testSanitizing()

ilServicesFileServicesTest::testSanitizing ( )

Definition at line 54 of file ilServicesFileServicesTest.php.

54  : void
55  {
56  $settings = $this->createMock(ilFileServicesSettings::class);
57  $settings->expects($this->once())
58  ->method('getWhiteListedSuffixes')
59  ->willReturn(['pdf', 'jpg']);
60 
61  $sanitizer = new ilFileServicesFilenameSanitizer($settings);
62  $this->assertTrue($sanitizer->isClean('/lib/test.pdf'));
63  $this->assertFalse($sanitizer->isClean('/lib/test.xml'));
64  $this->assertEquals('/lib/testxml.sec', $sanitizer->sanitize('/lib/test.xml'));
65  }
Class ilFileServicesFilenameSanitizer.

Field Documentation

◆ $db_mock

ilDBInterface ilServicesFileServicesTest::$db_mock = null
private

Definition at line 37 of file ilServicesFileServicesTest.php.

◆ $dic_backup

Container ilServicesFileServicesTest::$dic_backup
private

Definition at line 33 of file ilServicesFileServicesTest.php.

Referenced by tearDown().


The documentation for this class was generated from the following file: