3 declare(strict_types=1);
33 $settings = $this->createMock(ilFileServicesSettings::class);
35 ->method(
'getWhiteListedSuffixes')
36 ->willReturn([
'pdf',
'jpg']);
39 $this->assertTrue($sanitizer->isClean(
'/lib/test.pdf'));
40 $this->assertFalse($sanitizer->isClean(
'/lib/test.xml'));
41 $this->assertEquals(
'/lib/testxml.sec', $sanitizer->sanitize(
'/lib/test.xml'));
46 $settings = $this->createMock(ilFileServicesSettings::class);
48 ->method(
'getBlackListedSuffixes')
49 ->willReturn([
'pdf']);
52 ->method(
'isByPassAllowedForCurrentUser')
55 $stream = $this->createMock(FileStream::class);
56 $meta =
new Metadata(
'filename.pdf', 42,
'application/pdf');
63 $status = $processor->process($stream, $meta);
64 $this->assertEquals(ProcessingStatus::REJECTED, $status->getCode());
69 $settings = $this->createMock(ilFileServicesSettings::class);
71 ->method(
'getBlackListedSuffixes')
72 ->willReturn([
'pdf']);
75 ->method(
'isByPassAllowedForCurrentUser')
78 $stream = $this->createMock(FileStream::class);
79 $meta =
new Metadata(
'filename.pdf', 42,
'application/pdf');
86 $status = $processor->process($stream, $meta);
87 $this->assertEquals(ProcessingStatus::OK, $status->getCode());
92 $settings = $this->createMock(ilFileServicesSettings::class);
94 ->method(
'getWhiteListedSuffixes')
95 ->willReturn([
'pdf',
'png',
'jpg']);
99 $sane_filename =
'bellerophon.pdf';
100 $this->assertEquals($sane_filename, $sanitizer->sanitize($sane_filename));
102 $insane_filename =
'bellerophon.docx';
103 $this->assertNotEquals($insane_filename, $sanitizer->sanitize($insane_filename));
104 $this->assertEquals(
'bellerophondocx.sec', $sanitizer->sanitize($insane_filename));
109 $db_mock = $this->createMock(ilDBInterface::class);
110 $settings_mock = $this->createMock(ilSetting::class);
111 $ini_mock = $this->createMock(ilIniFile::class);
115 $db_mock->expects($this->once())
116 ->method(
'fetchObject')
119 $default_whitelist = include
"./Services/FileServices/defaults/default_whitelist.php";
122 $settings_mock->expects($this->exactly(3))
125 [
'suffix_custom_expl_black'],
126 [
'suffix_repl_additional'],
127 [
'suffix_custom_white_list']
129 ->willReturnOnConsecutiveCalls(
136 $this->assertEquals([
'bl001',
'bl002'],
$settings->getBlackListedSuffixes());
137 $this->assertEquals([
'bl001',
'bl002'],
$settings->getProhibited());
138 $this->assertEquals($default_whitelist,
$settings->getDefaultWhitelist());
139 $this->assertEquals([
'docx',
'doc'],
$settings->getWhiteListNegative());
140 $this->assertEquals([
'wl001',
'wl002'],
$settings->getWhiteListPositive());
142 $whitelist = array_merge(
143 array_diff($default_whitelist, [
'docx',
'doc']),
144 [
'wl001',
'wl002',
'']
146 $diff = array_diff($whitelist,
$settings->getWhiteListedSuffixes());
148 $this->assertEquals([], $diff);
149 $this->assertEquals(0, count($diff));
154 $db_mock = $this->createMock(ilDBInterface::class);
155 $settings_mock = $this->createMock(ilSetting::class);
156 $ini_mock = $this->createMock(ilIniFile::class);
158 $ini_mock->expects($this->once())
159 ->method(
'readVariable')
160 ->with(
'file_access',
'disable_ascii')
164 $this->assertFalse(
$settings->isASCIIConvertionEnabled());
169 $db_mock = $this->createMock(ilDBInterface::class);
170 $settings_mock = $this->createMock(ilSetting::class);
171 $ini_mock = $this->createMock(ilIniFile::class);
173 $ini_mock->expects($this->once())
174 ->method(
'readVariable')
175 ->with(
'file_access',
'disable_ascii')
179 $this->assertTrue(
$settings->isASCIIConvertionEnabled());
184 $settings = $this->createMock(ilFileServicesSettings::class);
187 ->method(
'getBlackListedSuffixes')
188 ->willReturn([
'mp3']);
191 ->method(
'getWhiteListedSuffixes')
192 ->willReturn([
'pdf',
'png',
'mp3']);
195 ->method(
'isASCIIConvertionEnabled')
199 $this->assertEquals(
'testmp3.sec', $policy->prepareFileNameForConsumer(
'test.mp3'));
200 $this->assertEquals(
'test.png', $policy->prepareFileNameForConsumer(
'test.png'));
201 $this->assertEquals(
'test.pdf', $policy->prepareFileNameForConsumer(
'test.pdf'));
202 $this->assertEquals(
'aeaeaeaeaeaeaeaeae.pdf', $policy->prepareFileNameForConsumer(
'äääääääää.pdf'));
203 $this->assertEquals(
'oeoeoeoeoeoeoeoeoe.pdf', $policy->prepareFileNameForConsumer(
'ööööööööö.pdf'));
204 $this->assertEquals(
'ueueueueueueueueue.pdf', $policy->prepareFileNameForConsumer(
'üüüüüüüüü.pdf'));
Class ilFileServicesPolicy.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ILIAS DI Container $dic_backup
Customizing of pimple-DIC for ILIAS.
testDisabledASCIISetting()
Class ilFileServicesFilenameSanitizer.
testRenamingNonWhitelistedFile()
testBlacklistedUploadWithPermission()
testFileNamePolicyOnDownloading()
Class ilFileServicesPolicy.