ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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.

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:36
global $DIC
Definition: shib_login.php:26

References $DIC.

◆ tearDown()

ilServicesFileServicesTest::tearDown ( )
protected

Definition at line 48 of file ilServicesFileServicesTest.php.

48 : void
49 {
50 global $DIC;
52 }

References $DIC, and $dic_backup.

◆ 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->assertSame(['bl001', 'bl002'], $settings->getBlackListedSuffixes());
166 $this->assertSame(['bl001', 'bl002'], $settings->getProhibited());
167 $this->assertEquals($default_whitelist, $settings->getDefaultWhitelist());
168 $this->assertSame(['docx', 'doc'], $settings->getWhiteListNegative());
169 $this->assertSame(['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->assertSame([], $diff);
178 $this->assertCount(0, $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->assertSame(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->assertSame(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->assertSame('testmp3.sec', $policy->prepareFileNameForConsumer('test.mp3'));
201 $this->assertSame('test.png', $policy->prepareFileNameForConsumer('test.png'));
202 $this->assertSame('test.pdf', $policy->prepareFileNameForConsumer('test.pdf'));
203 $this->assertSame('aeaeaeaeaeaeaeaeae.pdf', $policy->prepareFileNameForConsumer('äääääääää.pdf'));
204 $this->assertSame('oeoeoeoeoeoeoeoeoe.pdf', $policy->prepareFileNameForConsumer('ööööööööö.pdf'));
205 $this->assertSame('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->assertSame($sane_filename, $sanitizer->sanitize($sane_filename));
124
125 $insane_filename = 'bellerophon.docx';
126 $this->assertNotSame($insane_filename, $sanitizer->sanitize($insane_filename));
127 $this->assertSame('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->assertSame('/lib/testxml.sec', $sanitizer->sanitize('/lib/test.xml'));
65 }

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: