‪TYPO3CMS  ‪main
FileExtensionFilterTest.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\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
28 final class ‪FileExtensionFilterTest extends UnitTestCase
29 {
30  protected bool ‪$resetSingletonInstances = true;
31 
32  #[Test]
34  {
35  $dataHandlerMock = $this->createMock(DataHandler::class);
36  $dataHandlerMock->expects(self::never())->method('deleteAction');
37  $resourceFactoryMock = $this->createMock(ResourceFactory::class);
38  $resourceFactoryMock->expects(self::never())->method('getFileReferenceObject');
39  GeneralUtility::setSingletonInstance(ResourceFactory::class, $resourceFactoryMock);
40  (new ‪FileExtensionFilter())->filter([0, '', null, false], '', '', $dataHandlerMock);
41  }
42 
44  {
45  return [
46  'Allowed extensions' => [
47  'ext1', 'EXT1', '', true,
48  ],
49  'Allowed extensions, lower and upper case mix' => [
50  'ext1', 'ext2, ExT1, Ext3', '', true,
51  ],
52  'Disallowed extensions' => [
53  'ext1', '', 'EXT1', false,
54  ],
55  'Disallowed extensions, lower and upper case mix' => [
56  'ext1', '', 'ext2, ExT1, Ext3', false,
57  ],
58  'Combine allowed / disallowed extensions' => [
59  'ext1', 'EXT1', 'EXT1', false,
60  ],
61  ];
62  }
63 
64  #[DataProvider('extensionFilterIgnoresCaseInAllowedExtensionCheckDataProvider')]
65  #[Test]
67  string $fileExtension,
68  string $allowedExtensions,
69  string $disallowedExtensions,
70  bool $isAllowed
71  ): void {
72  $filter = $this->getAccessibleMock(FileExtensionFilter::class, null);
73  $filter->setAllowedFileExtensions($allowedExtensions);
74  $filter->setDisallowedFileExtensions($disallowedExtensions);
75  $result = $filter->_call('isAllowed', $fileExtension);
76  self::assertEquals($isAllowed, $result);
77  }
78 }
‪TYPO3\CMS\Core\DataHandling\DataHandler
Definition: DataHandler.php:94
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility\FileExtensionFilterTest
Definition: FileExtensionFilterTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility\FileExtensionFilterTest\extensionFilterIgnoresCaseInAllowedExtensionCheck
‪extensionFilterIgnoresCaseInAllowedExtensionCheck(string $fileExtension, string $allowedExtensions, string $disallowedExtensions, bool $isAllowed)
Definition: FileExtensionFilterTest.php:66
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility
Definition: FileExtensionFilterTest.php:18
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility\FileExtensionFilterTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: FileExtensionFilterTest.php:30
‪TYPO3\CMS\Core\Resource\ResourceFactory
Definition: ResourceFactory.php:42
‪TYPO3\CMS\Core\Resource\Filter\FileExtensionFilter
Definition: FileExtensionFilter.php:31
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility\FileExtensionFilterTest\areInlineChildrenFilteredWithInvalidParameters
‪areInlineChildrenFilteredWithInvalidParameters()
Definition: FileExtensionFilterTest.php:33
‪TYPO3\CMS\Core\Tests\Unit\Resource\Utility\FileExtensionFilterTest\extensionFilterIgnoresCaseInAllowedExtensionCheckDataProvider
‪static extensionFilterIgnoresCaseInAllowedExtensionCheckDataProvider()
Definition: FileExtensionFilterTest.php:43
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52