25 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
36 GeneralUtility::rmdir($folderToRemove,
true);
45 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
46 $this->setUpBackendUserFromFixture(1);
48 $subject->setEvaluatePermissions(
false);
55 $subject->addFileMount(
'/adirectory/', [
'read_only' =>
false]);
58 $rootProcessingFolder = $subject->getProcessingFolder();
59 $processingFolder = $subject->getProcessingFolder($file);
61 $this->assertInstanceOf(Folder::class, $processingFolder);
62 $this->assertNotEquals($rootProcessingFolder, $processingFolder);
65 $processingFolder = $processingFolder->getParentFolder();
67 $this->assertEquals($rootProcessingFolder, $processingFolder);
81 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
82 $fileName =
'bar.txt';
83 $this->setUpBackendUserFromFixture(1);
86 if ($fileMountFolder !== $targetDirectory) {
94 $subject->setEvaluatePermissions(
true);
97 $subject->addFileMount(
'/' . $fileMountFolder .
'/', [
'read_only' => $isFileMountReadOnly]);
98 $this->assertSame($expectedResult, $subject->isWithinFileMountBoundaries($file, $checkWriteAccess));
107 'Access to file in ro file mount denied for write request' => [
108 '$targetDirectory' =>
'fooBaz',
109 '$fileMountFolder' =>
'fooBaz',
110 '$isFileMountReadOnly' =>
true,
111 '$checkWriteAccess' =>
true,
112 '$expectedResult' =>
false,
114 'Access to file in ro file mount allowed for read request' => [
115 '$targetDirectory' =>
'fooBaz',
116 '$fileMountFolder' =>
'fooBaz',
117 '$isFileMountReadOnly' =>
true,
118 '$checkWriteAccess' =>
false,
119 '$expectedResult' =>
true,
121 'Access to file in rw file mount allowed for write request' => [
122 '$targetDirectory' =>
'fooBaz',
123 '$fileMountFolder' =>
'fooBaz',
124 '$isFileMountReadOnly' =>
false,
125 '$checkWriteAccess' =>
true,
126 '$expectedResult' =>
true,
128 'Access to file in rw file mount allowed for read request' => [
129 '$targetDirectory' =>
'fooBaz',
130 '$fileMountFolder' =>
'fooBaz',
131 '$isFileMountReadOnly' =>
false,
132 '$checkWriteAccess' =>
false,
133 '$expectedResult' =>
true,
135 'Access to file not in file mount denied for write request' => [
136 '$targetDirectory' =>
'fooBaz',
137 '$fileMountFolder' =>
'barBaz',
138 '$isFileMountReadOnly' =>
false,
139 '$checkWriteAccess' =>
true,
140 '$expectedResult' =>
false,
142 'Access to file not in file mount denied for read request' => [
143 '$targetDirectory' =>
'fooBaz',
144 '$fileMountFolder' =>
'barBaz',
145 '$isFileMountReadOnly' =>
false,
146 '$checkWriteAccess' =>
false,
147 '$expectedResult' =>
false,
157 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
158 $this->setUpBackendUserFromFixture(1);
161 $processingFolder = $subject->getProcessingFolder();
163 $this->assertInstanceOf(Folder::class, $processingFolder);
171 $folderIdentifier = $this->getUniqueId();
172 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
173 $this->setUpBackendUserFromFixture(1);
176 $folder =
new Folder($subject,
'/foo/' . $folderIdentifier .
'/', $folderIdentifier);
178 $role = $subject->getRole($folder);
188 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
189 $this->setUpBackendUserFromFixture(1);
197 $this->expectException(\InvalidArgumentException::class);
198 $this->expectExceptionCode(1325842622);
207 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
208 $this->setUpBackendUserFromFixture(1);
211 $this->expectException(\InvalidArgumentException::class);
212 $this->expectExceptionCode(1325689164);
213 $subject->createFolder(
'newFolder',
new Folder($subject,
'/foo/',
'foo'));
221 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
222 $this->setUpBackendUserFromFixture(1);
231 $subject->deleteFile($file);
242 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
243 $this->setUpBackendUserFromFixture(1);
251 $subject->deleteFile($file);
259 'Finds foo recursive by name' => [
268 'Finds foo not recursive by name' => [
277 'Finds nothing when not recursive for top level folder' => [
284 'Finds foo by description' => [
293 'Finds foo by translated description' => [
302 'Finds blupp by name' => [
311 'Finds only blupp by title for non recursive' => [
320 'Finds foo and blupp by title for recursive' => [
330 'Finds foo, baz and blupp with no folder' => [
341 'Finds nothing for not existing' => [
348 'Finds nothing in root, when not recursive' => [
355 'Finds nothing, when not recursive and no folder given' => [
362 'Filter is applied to result' => [
367 function ($itemName) {
368 return strpos($itemName,
'blupp') !==
false ? true : -1;
391 $this->importDataSet(
'PACKAGE:typo3/testing-framework/Resources/Core/Functional/Fixtures/sys_file_storage.xml');
392 $this->importDataSet(__DIR__ .
'/Fixtures/FileSearch.xml');
393 $this->setUpBackendUserFromFixture(1);
395 $subject->setFileAndFolderNameFilters($filters);
407 $search = $search->withRecursive();
410 $result = $subject->searchFiles($search, $folder);
411 $expectedFiles = array_map([$subject,
'getFile'], $expectedIdentifiers);
412 $this->assertSame($expectedFiles, iterator_to_array($result));
415 $this->inject($subject,
'capabilities', $subject->getCapabilities() & 7);
416 $result = $subject->searchFiles($search, $folder);
417 $expectedFiles = array_map([$subject,
'getFile'], $expectedIdentifiers);
418 $this->assertSame($expectedFiles, iterator_to_array($result));