‪TYPO3CMS  11.5
ResourceStorageTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\MockObject\MockObject;
21 use Prophecy\Argument;
22 use Prophecy\PhpUnit\ProphecyTrait;
23 use Psr\EventDispatcher\EventDispatcherInterface;
39 
44 {
45  use ProphecyTrait;
46 
50  protected ‪$resetSingletonInstances = true;
51 
55  protected ‪$subject;
56 
60  protected ‪$eventDispatcher;
61 
65  protected function ‪setUp(): void
66  {
67  parent::setUp();
68  $fileRepositoryMock = $this->createMock(FileRepository::class);
69  GeneralUtility::setSingletonInstance(
70  FileRepository::class,
71  $fileRepositoryMock
72  );
73  $cacheManagerProphecy = $this->prophesize(CacheManager::class);
74  $cacheProphecy = $this->prophesize(FrontendInterface::class);
75  $cacheManagerProphecy->getCache('runtime')->willReturn($cacheProphecy->reveal());
76  $cacheProphecy->get(Argument::cetera())->willReturn(false);
77  $cacheProphecy->set(Argument::cetera())->willReturn(false);
78  GeneralUtility::setSingletonInstance(CacheManager::class, $cacheManagerProphecy->reveal());
79  ‪$eventDispatcher = $this->prophesize(EventDispatcherInterface::class);
80  ‪$eventDispatcher->dispatch(Argument::cetera())->willReturnArgument(0);
81  $this->eventDispatcher = ‪$eventDispatcher->reveal();
82  }
83 
94  protected function ‪prepareSubject(
95  array $configuration,
96  bool $mockPermissionChecks = false,
97  ‪AbstractDriver $driverObject = null,
98  ‪ResourceFactory $resourceFactory = null,
99  array $storageRecord = [],
100  array $mockedMethods = []
101  ): void {
102  $permissionMethods = [
103  'assureFileAddPermissions',
104  'checkFolderActionPermission',
105  'checkFileActionPermission',
106  'checkUserActionPermission',
107  'checkFileExtensionPermission',
108  'isWithinFileMountBoundaries',
109  'assureFileRenamePermissions',
110  ];
111  $configuration = $this->‪convertConfigurationArrayToFlexformXml($configuration);
112  $overruleArray = ['configuration' => $configuration];
113  ‪ArrayUtility::mergeRecursiveWithOverrule($storageRecord, $overruleArray);
114  if ($driverObject === null) {
115  $driverObject = $this->getMockForAbstractClass(AbstractDriver::class, [], '', false);
116  }
117  if ($resourceFactory === null) {
118  $resourceFactory = $this->createMock(ResourceFactory::class);
119  }
120  $mockedMethods[] = 'getResourceFactoryInstance';
121  if ($mockPermissionChecks) {
122  $mockedMethods = array_merge($mockedMethods, $permissionMethods);
123  }
124  $mockedMethods[] = 'getIndexer';
125 
126  $this->subject = $this->getMockBuilder(ResourceStorage::class)
127  ->onlyMethods(array_unique($mockedMethods))
128  ->setConstructorArgs([$driverObject, $storageRecord, $this->eventDispatcher])
129  ->getMock();
130  $this->subject->method('getResourceFactoryInstance')->willReturn($resourceFactory);
131  $this->subject->method('getIndexer')->willReturn($this->createMock(Indexer::class));
132  if ($mockPermissionChecks) {
133  foreach ($permissionMethods as $method) {
134  $this->subject->method($method)->willReturn(true);
135  }
136  }
137  }
138 
146  protected function ‪convertConfigurationArrayToFlexformXml(array $configuration): string
147  {
148  $flexFormArray = ['data' => ['sDEF' => ['lDEF' => []]]];
149  foreach ($configuration as $key => $value) {
150  $flexFormArray['data']['sDEF']['lDEF'][$key] = ['vDEF' => $value];
151  }
152  $configuration = GeneralUtility::array2xml($flexFormArray);
153  return $configuration;
154  }
155 
163  protected function ‪createDriverMock(
164  array $driverConfiguration,
165  ResourceStorage $storageObject = null,
166  array $mockedDriverMethods = []
167  ) {
168  $this->‪initializeVfs();
169 
170  if (!isset($driverConfiguration['basePath'])) {
171  $driverConfiguration['basePath'] = $this->‪getMountRootUrl();
172  }
173 
174  // We are using the LocalDriver here because PHPUnit can't mock concrete methods in abstract classes, so
175  // when using the AbstractDriver we would be in trouble when wanting to mock away some concrete method
176  $driver = $this->getMockBuilder(LocalDriver::class)
177  ->onlyMethods($mockedDriverMethods)
178  ->setConstructorArgs([$driverConfiguration])
179  ->getMock();
180  if ($storageObject instanceof ResourceStorage) {
181  $storageObject->setDriver($driver);
182  }
183  $driver->setStorageUid(6);
184  $driver->processConfiguration();
185  $driver->initialize();
186  return $driver;
187  }
188 
192  public function ‪capabilitiesDataProvider(): array
193  {
194  return [
195  'only public' => [
196  [
197  'public' => true,
198  'writable' => false,
199  'browsable' => false,
200  ],
201  ],
202  'only writable' => [
203  [
204  'public' => false,
205  'writable' => true,
206  'browsable' => false,
207  ],
208  ],
209  'only browsable' => [
210  [
211  'public' => false,
212  'writable' => false,
213  'browsable' => true,
214  ],
215  ],
216  'all capabilities' => [
217  [
218  'public' => true,
219  'writable' => true,
220  'browsable' => true,
221  ],
222  ],
223  'none' => [
224  [
225  'public' => false,
226  'writable' => false,
227  'browsable' => false,
228  ],
229  ],
230  ];
231  }
232 
236  public function ‪addFileFailsIfFileDoesNotExist(): void
237  {
238  $mockedFolder = $this->createMock(Folder::class);
239  $this->expectException(\InvalidArgumentException::class);
240  $this->expectExceptionCode(1319552745);
241  $this->‪prepareSubject([]);
242  $this->subject->addFile('/some/random/file', $mockedFolder);
243  }
244 
248  public function ‪getPublicUrlReturnsNullIfStorageIsNotOnline(): void
249  {
250  $driver = $this->getMockBuilder(LocalDriver::class)
251  ->setConstructorArgs([['basePath' => $this->‪getMountRootUrl()]])
252  ->getMock();
253  $mockedResourceFactory = $this->createMock(ResourceFactory::class);
254  ‪$subject = $this->getMockBuilder(ResourceStorage::class)
255  ->onlyMethods(['isOnline', 'getResourceFactoryInstance'])
256  ->setConstructorArgs([$driver, ['configuration' => []], $this->eventDispatcher])
257  ->getMock();
258  ‪$subject->expects(self::once())->method('isOnline')->willReturn(false);
259  ‪$subject->method('getResourceFactoryInstance')->willReturn($mockedResourceFactory);
260 
261  $sourceFileIdentifier = '/sourceFile.ext';
262  $sourceFile = $this->‪getSimpleFileMock($sourceFileIdentifier);
263  $result = ‪$subject->‪getPublicUrl($sourceFile);
264  self::assertNull($result);
265  }
266 
273  {
274  return [
275  'read action on readable/writable folder' => [
276  'read',
277  ['r' => true, 'w' => true],
278  true,
279  ],
280  'read action on unreadable folder' => [
281  'read',
282  ['r' => false, 'w' => true],
283  false,
284  ],
285  'write action on read-only folder' => [
286  'write',
287  ['r' => true, 'w' => false],
288  false,
289  ],
290  ];
291  }
292 
301  string $action,
302  array $permissionsFromDriver,
303  bool $expectedResult
304  ): void {
305  $mockedDriver = $this->createMock(LocalDriver::class);
306  $mockedDriver->method('getPermissions')->willReturn($permissionsFromDriver);
307  $mockedResourceFactory = $this->createMock(ResourceFactory::class);
308  $mockedFolder = $this->createMock(Folder::class);
309  // Let all other checks pass
310  ‪$subject = $this->getMockBuilder(ResourceStorage::class)
311  ->onlyMethods(['isWritable', 'isBrowsable', 'checkUserActionPermission', 'getResourceFactoryInstance'])
312  ->setConstructorArgs([$mockedDriver, [], $this->eventDispatcher])
313  ->getMock();
314  ‪$subject->method('isWritable')->willReturn(true);
315  ‪$subject->method('isBrowsable')->willReturn(true);
316  ‪$subject->method('checkUserActionPermission')->willReturn(true);
317  ‪$subject->method('getResourceFactoryInstance')->willReturn($mockedResourceFactory);
318  ‪$subject->‪setDriver($mockedDriver);
319 
320  self::assertSame($expectedResult, ‪$subject->‪checkFolderActionPermission($action, $mockedFolder));
321  }
322 
327  {
328  $this->‪prepareSubject([]);
329  self::assertTrue($this->subject->checkUserActionPermission('read', 'folder'));
330  }
331 
336  {
337  $this->‪prepareSubject([]);
338  $this->subject->setUserPermissions(['readFolder' => true, 'writeFile' => true]);
339  self::assertTrue($this->subject->checkUserActionPermission('read', 'folder'));
340  }
341 
346  {
347  return [
348  'all lower cased' => [
349  ['readFolder' => true],
350  'read',
351  'folder',
352  ],
353  'all upper case' => [
354  ['readFolder' => true],
355  'READ',
356  'FOLDER',
357  ],
358  'mixed case' => [
359  ['readFolder' => true],
360  'ReaD',
361  'FoLdEr',
362  ],
363  ];
364  }
365 
373  public function ‪checkUserActionPermissionAcceptsArbitrarilyCasedArguments(array $permissions, string $action, string $type): void
374  {
375  $this->‪prepareSubject([]);
376  $this->subject->setUserPermissions($permissions);
377  self::assertTrue($this->subject->checkUserActionPermission($action, $type));
378  }
379 
384  {
385  $this->‪prepareSubject([]);
386  $this->subject->setEvaluatePermissions(true);
387  $this->subject->setUserPermissions(['readFolder' => false]);
388  self::assertFalse($this->subject->checkUserActionPermission('read', 'folder'));
389  }
390 
394  public function ‪userActionIsDisallowedIfPermissionIsNotSet(): void
395  {
396  $this->‪prepareSubject([]);
397  $this->subject->setEvaluatePermissions(true);
398  $this->subject->setUserPermissions(['readFolder' => true]);
399  self::assertFalse($this->subject->checkUserActionPermission('write', 'folder'));
400  }
401 
406  {
407  $this->‪prepareSubject([], false, null, null, [], ['isWithinProcessingFolder']);
408  $this->subject->setEvaluatePermissions(true);
409  self::assertFalse($this->subject->checkFileActionPermission('editMeta', new ‪File(['identifier' => '/foo/bar.jpg'], $this->subject)));
410  }
411 
415  public function ‪metaDataEditIsAllowedWhenWhenInFileMount(): void
416  {
417  $driverMock = $this->getMockForAbstractClass(AbstractDriver::class, [], '', false);
418  $resourceFactory = $this->prophesize(ResourceFactory::class);
419  $this->‪prepareSubject([], false, $driverMock, $resourceFactory->reveal(), [], ['isWithinProcessingFolder']);
420 
421  $folderStub = new ‪Folder($this->subject, '/foo/', 'foo');
422  $resourceFactory->createFolderObject(Argument::cetera())->willReturn($folderStub);
423  $fileStub = new ‪File(['identifier' => '/foo/bar.jpg', 'name' => 'bar.jpg'], $this->subject);
424  $driverMock->expects(self::once())
425  ->method('isWithin')
426  ->with($folderStub->getIdentifier(), $fileStub->getIdentifier())
427  ->willReturn(true);
428  $driverMock->expects(self::once())
429  ->method('getFolderInfoByIdentifier')
430  ->with($folderStub->getIdentifier())
431  ->willReturn(['identifier' => $folderStub->getIdentifier(), 'name' => $folderStub->getName()]);
432 
433  $this->subject->setEvaluatePermissions(true);
434  $this->subject->addFileMount('/foo/', [
435  'path' => '/foo/',
436  'title' => 'Foo',
437  'folder' => $folderStub,
438  ]);
439  self::assertTrue($this->subject->checkFileActionPermission('editMeta', $fileStub));
440  }
441 
446  {
447  $driverMock = $this->getMockForAbstractClass(AbstractDriver::class, [], '', false);
448  $resourceFactory = $this->prophesize(ResourceFactory::class);
449  $this->‪prepareSubject([], false, $driverMock, $resourceFactory->reveal(), [], ['isWithinProcessingFolder']);
450 
451  $fileStub = new ‪File(['identifier' => '/foo/bar.jpg', 'name' => 'bar.jpg'], $this->subject);
452  $folderStub = new ‪Folder($this->subject, '/foo/', 'foo');
453  $resourceFactory->createFolderObject(Argument::cetera())->willReturn($folderStub);
454  $driverMock->expects(self::once())
455  ->method('isWithin')
456  ->with($folderStub->getIdentifier(), $fileStub->getIdentifier())
457  ->willReturn(true);
458  $driverMock->expects(self::once())
459  ->method('getFolderInfoByIdentifier')
460  ->with($folderStub->getIdentifier())
461  ->willReturn(['identifier' => $folderStub->getIdentifier(), 'name' => $folderStub->getName()]);
462 
463  $this->subject->setEvaluatePermissions(true);
464  $this->subject->addFileMount('/foo/', [
465  'path' => '/foo/',
466  'title' => 'Foo',
467  'folder' => $folderStub,
468  'read_only' => true,
469  ]);
470  self::assertFalse($this->subject->checkFileActionPermission('editMeta', $fileStub));
471  }
472 
476  public function ‪getEvaluatePermissionsWhenSetFalse(): void
477  {
478  $this->‪prepareSubject([]);
479  $this->subject->setEvaluatePermissions(false);
480  self::assertFalse($this->subject->getEvaluatePermissions());
481  }
482 
486  public function ‪getEvaluatePermissionsWhenSetTrue(): void
487  {
488  $this->‪prepareSubject([]);
489  $this->subject->setEvaluatePermissions(true);
490  self::assertTrue($this->subject->getEvaluatePermissions());
491  }
492 
497  {
498  $this->expectException(\RuntimeException::class);
499  $this->expectExceptionCode(1325952534);
500 
501  $folderMock = $this->createMock(Folder::class);
502  $mockedDriver = $this->getMockForAbstractClass(AbstractDriver::class);
503  $mockedDriver->expects(self::once())->method('isFolderEmpty')->willReturn(false);
504 
505  ‪$subject = $this->getAccessibleMock(ResourceStorage::class, ['checkFolderActionPermission'], [], '', false);
506  ‪$subject->method('checkFolderActionPermission')->willReturn(true);
507  ‪$subject->_set('driver', $mockedDriver);
508  ‪$subject->‪deleteFolder($folderMock, false);
509  }
510 
515  {
516  $this->expectException(\InvalidArgumentException::class);
517  $this->expectExceptionCode(1325689164);
518  $mockedParentFolder = $this->‪getSimpleFolderMock('/someFolder/');
519  $this->‪prepareSubject([], true);
520  $mockedDriver = $this->‪createDriverMock([], $this->subject, ['folderExists']);
521  $mockedDriver->expects(self::once())->method('folderExists')->with(self::equalTo('/someFolder/'))->willReturn(false);
522  $this->subject->createFolder('newFolder', $mockedParentFolder);
523  }
524 
528  public function ‪renameFileRenamesFileAsRequested(): void
529  {
530  $mockedDriver = $this->‪createDriverMock([], $this->subject, ['renameFile']);
531  $mockedDriver->expects(self::once())->method('renameFile')->willReturn('bar');
532  $this->‪prepareSubject([], true, $mockedDriver, null);
533  $file = new ‪File(['identifier' => 'foo', 'name' => 'foo'], $this->subject);
534  $result = $this->subject->renameFile($file, 'bar');
535  // fake what the indexer does in updateIndexEntry
536  $result->updateProperties(['name' => $result->getIdentifier()]);
537  self::assertSame('bar', $result->getName());
538  }
539 
544  {
545  $mockedDriver = $this->‪createDriverMock([], $this->subject, ['renameFile', 'sanitizeFileName']);
546  $mockedDriver->method('renameFile')->will(self::onConsecutiveCalls(self::throwException(new ‪ExistingTargetFileNameException(
547  'foo',
548  1489593090
549  )), 'bar_01'));
550  $mockedDriver->method('sanitizeFileName')->will(self::onConsecutiveCalls(
551  'bar',
552  'bar_01'
553  ));
554  $this->‪prepareSubject(
555  [],
556  true,
557  $mockedDriver,
558  null,
559  [],
560  ['getUniqueName', 'createFolderObject']
561  );
562  $this->subject->expects(self::once())->method('createFolderObject')->willReturn(new ‪Folder($this->subject, '', ''));
563  $file = new ‪File(['identifier' => 'foo', 'name' => 'foo'], $this->subject);
564  $this->subject->method('getUniqueName')->willReturn('bar_01');
565  $result = $this->subject->renameFile($file, 'bar');
566  // fake what the indexer does in updateIndexEntry
567  $result->updateProperties(['name' => $result->getIdentifier()]);
568  self::assertSame('bar_01', $result->getName());
569  }
570 
575  {
576  $mockedDriver = $this->‪createDriverMock([], $this->subject, ['renameFile']);
577  $mockedDriver->expects(self::once())->method('renameFile')->will(self::throwException(new ‪ExistingTargetFileNameException(
578  'foo',
579  1489593099
580  )));
581  $this->‪prepareSubject([], true, $mockedDriver);
582  $file = new ‪File(['identifier' => 'foo', 'name' => 'foo'], $this->subject);
583  $this->expectException(ExistingTargetFileNameException::class);
584  $this->subject->renameFile($file, 'bar', ‪DuplicationBehavior::CANCEL);
585  }
586 
591  {
592  $mockedDriver = $this->‪createDriverMock([], $this->subject, ['renameFile', 'sanitizeFileName']);
593  $mockedDriver->expects(self::once())->method('renameFile')->will(self::throwException(new ‪ExistingTargetFileNameException(
594  'foo',
595  1489593098
596  )));
597  $mockedDriver->method('sanitizeFileName')->willReturn('bar');
598  $resourceFactory = $this->prophesize(ResourceFactory::class);
599  $this->‪prepareSubject([], true, $mockedDriver, $resourceFactory->reveal(), [], [
600  'replaceFile',
601  'getPublicUrl',
602  ]);
603  $this->subject->expects(self::once())->method('getPublicUrl')->willReturn('somePath');
604  $file = $this->prophesize(FileInterface::class);
605  $resourceFactory->getFileObjectFromCombinedIdentifier(Argument::any())->willReturn($file->reveal());
606  $this->subject->expects(self::once())->method('replaceFile')->willReturn($file->reveal());
607  $file = new ‪File(['identifier' => 'foo', 'name' => 'foo', 'missing' => false], $this->subject);
608  $this->subject->renameFile($file, 'bar', ‪DuplicationBehavior::REPLACE);
609  }
610 }
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\renameFileRenamesFileAsRequested
‪renameFileRenamesFileAsRequested()
Definition: ResourceStorageTest.php:524
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkFolderPermissionsRespectsFilesystemPermissions
‪checkFolderPermissionsRespectsFilesystemPermissions(string $action, array $permissionsFromDriver, bool $expectedResult)
Definition: ResourceStorageTest.php:296
‪TYPO3\CMS\Core\Resource\ResourceStorage\deleteFolder
‪bool deleteFolder($folderObject, $deleteRecursively=false)
Definition: ResourceStorage.php:2395
‪TYPO3\CMS\Core\Resource\DuplicationBehavior
Definition: DuplicationBehavior.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkUserActionPermissionReturnsFalseIfPermissionIsSetToZero
‪checkUserActionPermissionReturnsFalseIfPermissionIsSetToZero()
Definition: ResourceStorageTest.php:331
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\capabilitiesDataProvider
‪array capabilitiesDataProvider()
Definition: ResourceStorageTest.php:188
‪TYPO3\CMS\Core\Resource\DuplicationBehavior\CANCEL
‪const CANCEL
Definition: DuplicationBehavior.php:46
‪TYPO3\CMS\Core\Resource\ResourceStorage\getPublicUrl
‪string null getPublicUrl(ResourceInterface $resourceObject, $relativeToCurrentScript=false)
Definition: ResourceStorage.php:1374
‪TYPO3\CMS\Core\Resource\FileInterface
Definition: FileInterface.php:22
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkUserActionPermissionsAlwaysReturnsTrueIfNoUserPermissionsAreSet
‪checkUserActionPermissionsAlwaysReturnsTrueIfNoUserPermissionsAreSet()
Definition: ResourceStorageTest.php:322
‪TYPO3\CMS\Core\Resource\Driver\LocalDriver
Definition: LocalDriver.php:41
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\createDriverMock
‪TYPO3 CMS Core Resource Driver LocalDriver MockObject createDriverMock(array $driverConfiguration, ResourceStorage $storageObject=null, array $mockedDriverMethods=[])
Definition: ResourceStorageTest.php:159
‪TYPO3\CMS\Core\Resource\Index\Indexer
Definition: Indexer.php:34
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\renameFileThrowsExceptionIfConflictAndConflictModeIsCancel
‪renameFileThrowsExceptionIfConflictAndConflictModeIsCancel()
Definition: ResourceStorageTest.php:570
‪TYPO3\CMS\Core\Tests\Unit\Resource
Definition: AbstractFileTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase
Definition: BaseTestCase.php:31
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\userActionIsDisallowedIfPermissionIsSetToFalse
‪userActionIsDisallowedIfPermissionIsSetToFalse()
Definition: ResourceStorageTest.php:379
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\renameFileReplacesIfConflictAndConflictModeIsReplace
‪renameFileReplacesIfConflictAndConflictModeIsReplace()
Definition: ResourceStorageTest.php:586
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\deleteFolderThrowsExceptionIfFolderIsNotEmptyAndRecursiveDeleteIsDisabled
‪deleteFolderThrowsExceptionIfFolderIsNotEmptyAndRecursiveDeleteIsDisabled()
Definition: ResourceStorageTest.php:492
‪TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException
Definition: ExistingTargetFileNameException.php:23
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\metaDataEditIsNotAllowedWhenWhenNoFileMountsAreSet
‪metaDataEditIsNotAllowedWhenWhenNoFileMountsAreSet()
Definition: ResourceStorageTest.php:401
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\$subject
‪ResourceStorage MockObject $subject
Definition: ResourceStorageTest.php:52
‪TYPO3\CMS\Core\Utility\ArrayUtility\mergeRecursiveWithOverrule
‪static mergeRecursiveWithOverrule(array &$original, array $overrule, $addKeys=true, $includeEmptyValues=true, $enableUnsetFeature=true)
Definition: ArrayUtility.php:654
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\renameFileRenamesWithUniqueNameIfConflictAndConflictModeIsRename
‪renameFileRenamesWithUniqueNameIfConflictAndConflictModeIsRename()
Definition: ResourceStorageTest.php:539
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\getPublicUrlReturnsNullIfStorageIsNotOnline
‪getPublicUrlReturnsNullIfStorageIsNotOnline()
Definition: ResourceStorageTest.php:244
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\metaDataEditIsNotAllowedWhenWhenInReadOnlyFileMount
‪metaDataEditIsNotAllowedWhenWhenInReadOnlyFileMount()
Definition: ResourceStorageTest.php:441
‪TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase\getSimpleFolderMock
‪TYPO3 CMS Core Resource Folder getSimpleFolderMock(string $identifier, array $mockedMethods=[])
Definition: BaseTestCase.php:139
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest
Definition: ResourceStorageTest.php:44
‪TYPO3\CMS\Core\Resource\ResourceStorage\checkFolderActionPermission
‪bool checkFolderActionPermission($action, Folder $folder=null)
Definition: ResourceStorage.php:782
‪TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase\getSimpleFileMock
‪TYPO3 CMS Core Resource File PHPUnit Framework MockObject MockObject getSimpleFileMock(string $identifier, array $mockedMethods=[])
Definition: BaseTestCase.php:127
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\convertConfigurationArrayToFlexformXml
‪string convertConfigurationArrayToFlexformXml(array $configuration)
Definition: ResourceStorageTest.php:142
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\getEvaluatePermissionsWhenSetTrue
‪getEvaluatePermissionsWhenSetTrue()
Definition: ResourceStorageTest.php:482
‪TYPO3\CMS\Core\Resource\FileRepository
Definition: FileRepository.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\createFolderThrowsExceptionIfParentFolderDoesNotExist
‪createFolderThrowsExceptionIfParentFolderDoesNotExist()
Definition: ResourceStorageTest.php:510
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:41
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: ResourceStorageTest.php:48
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase\getMountRootUrl
‪getMountRootUrl()
Definition: BaseTestCase.php:46
‪TYPO3\CMS\Core\Cache\CacheManager
Definition: CacheManager.php:36
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkUserActionPermission_arbitraryPermissionDataProvider
‪array checkUserActionPermission_arbitraryPermissionDataProvider()
Definition: ResourceStorageTest.php:341
‪TYPO3\CMS\Core\Cache\Frontend\FrontendInterface
Definition: FrontendInterface.php:22
‪TYPO3\CMS\Core\Resource\ResourceStorage
Definition: ResourceStorage.php:125
‪TYPO3\CMS\Core\Resource\ResourceStorage\setDriver
‪ResourceStorage setDriver(DriverInterface $driver)
Definition: ResourceStorage.php:299
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkUserActionPermissionAcceptsArbitrarilyCasedArguments
‪checkUserActionPermissionAcceptsArbitrarilyCasedArguments(array $permissions, string $action, string $type)
Definition: ResourceStorageTest.php:369
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:24
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\prepareSubject
‪prepareSubject(array $configuration, bool $mockPermissionChecks=false, AbstractDriver $driverObject=null, ResourceFactory $resourceFactory=null, array $storageRecord=[], array $mockedMethods=[])
Definition: ResourceStorageTest.php:90
‪TYPO3\CMS\Core\Resource\DuplicationBehavior\REPLACE
‪const REPLACE
Definition: DuplicationBehavior.php:39
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\addFileFailsIfFileDoesNotExist
‪addFileFailsIfFileDoesNotExist()
Definition: ResourceStorageTest.php:232
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\metaDataEditIsAllowedWhenWhenInFileMount
‪metaDataEditIsAllowedWhenWhenInFileMount()
Definition: ResourceStorageTest.php:411
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\getEvaluatePermissionsWhenSetFalse
‪getEvaluatePermissionsWhenSetFalse()
Definition: ResourceStorageTest.php:472
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\$eventDispatcher
‪EventDispatcherInterface $eventDispatcher
Definition: ResourceStorageTest.php:56
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\checkFolderPermissionsFilesystemPermissionsDataProvider
‪array checkFolderPermissionsFilesystemPermissionsDataProvider()
Definition: ResourceStorageTest.php:268
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\userActionIsDisallowedIfPermissionIsNotSet
‪userActionIsDisallowedIfPermissionIsNotSet()
Definition: ResourceStorageTest.php:390
‪TYPO3\CMS\Core\Tests\Unit\Resource\ResourceStorageTest\setUp
‪setUp()
Definition: ResourceStorageTest.php:61
‪TYPO3\CMS\Core\Resource\Driver\AbstractDriver
Definition: AbstractDriver.php:25
‪TYPO3\CMS\Core\Tests\Unit\Resource\BaseTestCase\initializeVfs
‪initializeVfs()
Definition: BaseTestCase.php:56