‪TYPO3CMS  ‪main
PathUtilityPublicPathsTest.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 
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
24 
25 final class ‪PathUtilityPublicPathsTest extends UnitTestCase
26 {
27  protected bool ‪$backupEnvironment = true;
28 
29  protected array ‪$serverBackup;
30 
31  protected function ‪setUp(): void
32  {
33  $this->serverBackup = $_SERVER;
34  parent::setUp();
35  }
36 
37  protected function ‪tearDown(): void
38  {
39  $_SERVER = ‪$this->serverBackup;
40  parent::tearDown();
41  }
42 
46  protected static function ‪simulateWebRequest(string $publicDir, string $subDirectory = '/'): void
47  {
48  $_SERVER['HTTP_HOST'] = 'localhost';
49  $_SERVER['SCRIPT_NAME'] = $subDirectory . 'index.php';
50 
53  false,
54  true,
56  $publicDir,
59  $publicDir . '/index.php',
60  ‪Environment::isWindows() ? 'WINDOWS' : 'UNIX'
61  );
62  }
63 
64  protected static function ‪simulateWebRequestInComposerMode(): void
65  {
67  }
68 
69  protected static function ‪simulateWebRequestInComposerModeInSubDirectory(string $subDirectory = '/subDir/'): void
70  {
71  ‪self::simulateWebRequest(‪Environment::getPublicPath() . '/typo3temp', $subDirectory);
72  }
73 
74  protected static function ‪simulateTraditionalWebRequest(): void
75  {
77  }
78 
79  protected static function ‪simulateTraditionalWebRequestInSubDirectory(string $subDirectory = '/subDir/'): void
80  {
82  }
83 
88  {
89  $this->expectException(InvalidFileException::class);
90  $this->expectExceptionCode(1630089406);
91  ‪PathUtility::getPublicResourceWebPath('typo3/sysext/core/Resources/Public/Icons/Extension.svg');
92  }
93 
98  {
100  $this->expectException(InvalidFileException::class);
101  $this->expectExceptionCode(1635268969);
102  ‪PathUtility::getPublicResourceWebPath('EXT:core/Resources/Private/Font/nimbus.ttf');
103  }
104 
106  {
107  return [
108  'public assets are resolved to absolute url' => [
109  'EXT:core/Resources/Public/Icons/Extension.svg',
110  '/typo3/sysext/core/Resources/Public/Icons/Extension.svg',
112  ],
113  'public assets are resolved to relative url on cli' => [
114  'EXT:core/Resources/Public/Icons/Extension.svg',
115  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
116  fn () => true,
117  ],
118  'public assets are resolved to absolute url with sub directory prefixed' => [
119  'EXT:core/Resources/Public/Icons/Extension.svg',
120  '/cms/typo3/sysext/core/Resources/Public/Icons/Extension.svg',
122  ],
123  'public assets are resolved to absolute url of published assets in Composer mode' => [
124  'EXT:core/Resources/Public/Icons/Extension.svg',
125  '/_assets/d25de869aebcd01495d2fe67ad5b0e25/Icons/Extension.svg',
127  ],
128  'public assets are resolved to absolute url of published assets in Composer mode with sub directory prefixed' => [
129  'EXT:core/Resources/Public/Icons/Extension.svg',
130  '/cms/_assets/d25de869aebcd01495d2fe67ad5b0e25/Icons/Extension.svg',
132  ],
133  ];
134  }
135 
141  public function ‪getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup): void
142  {
143  $setup();
144  self::assertSame(
145  $expectedUrl,
147  );
148  }
149 }
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tryingToResolveNonExtensionResourcesThrowsException
‪tryingToResolveNonExtensionResourcesThrowsException()
Definition: PathUtilityPublicPathsTest.php:87
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:27
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tryingToResolvePrivateResourcesFromComposerPackagesThrowsException
‪tryingToResolvePrivateResourcesFromComposerPackagesThrowsException()
Definition: PathUtilityPublicPathsTest.php:97
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static getPublicPath()
Definition: Environment.php:187
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequestInComposerModeInSubDirectory
‪static simulateWebRequestInComposerModeInSubDirectory(string $subDirectory='/subDir/')
Definition: PathUtilityPublicPathsTest.php:69
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequestInComposerMode
‪static simulateWebRequestInComposerMode()
Definition: PathUtilityPublicPathsTest.php:64
‪TYPO3\CMS\Core\Tests\Unit\Utility
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateTraditionalWebRequest
‪static simulateTraditionalWebRequest()
Definition: PathUtilityPublicPathsTest.php:74
‪TYPO3\CMS\Core\Core\Environment\getVarPath
‪static getVarPath()
Definition: Environment.php:197
‪TYPO3\CMS\Core\Core\Environment\getConfigPath
‪static getConfigPath()
Definition: Environment.php:212
‪TYPO3\CMS\Core\Core\Environment\getProjectPath
‪static string getProjectPath()
Definition: Environment.php:160
‪TYPO3\CMS\Core\Utility\PathUtility\getPublicResourceWebPath
‪static getPublicResourceWebPath(string $resourcePath, bool $prefixWithSitePath=true)
Definition: PathUtility.php:97
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateTraditionalWebRequestInSubDirectory
‪static simulateTraditionalWebRequestInSubDirectory(string $subDirectory='/subDir/')
Definition: PathUtilityPublicPathsTest.php:79
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\setUp
‪setUp()
Definition: PathUtilityPublicPathsTest.php:31
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tearDown
‪tearDown()
Definition: PathUtilityPublicPathsTest.php:37
‪TYPO3\CMS\Core\Resource\Exception\InvalidFileException
Definition: InvalidFileException.php:24
‪TYPO3\CMS\Core\Core\Environment\initialize
‪static initialize(ApplicationContext $context, bool $cli, bool $composerMode, string $projectPath, string $publicPath, string $varPath, string $configPath, string $currentScript, string $os)
Definition: Environment.php:100
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\$backupEnvironment
‪bool $backupEnvironment
Definition: PathUtilityPublicPathsTest.php:27
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\getPublicResourceWebPathResolvesUrlsCorrectly
‪getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup)
Definition: PathUtilityPublicPathsTest.php:141
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\$serverBackup
‪array $serverBackup
Definition: PathUtilityPublicPathsTest.php:29
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider
‪static getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider()
Definition: PathUtilityPublicPathsTest.php:105
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest
Definition: PathUtilityPublicPathsTest.php:26
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequest
‪static simulateWebRequest(string $publicDir, string $subDirectory='/')
Definition: PathUtilityPublicPathsTest.php:46
‪TYPO3\CMS\Core\Core\Environment\getContext
‪static getContext()
Definition: Environment.php:128
‪TYPO3\CMS\Core\Core\Environment\isWindows
‪static isWindows()
Definition: Environment.php:276