‪TYPO3CMS  11.5
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 
28 class ‪PathUtilityPublicPathsTest extends UnitTestCase
29 {
30  protected ‪$backupEnvironment = true;
31 
32  protected array ‪$serverBackup;
33 
34  protected function ‪setUp(): void
35  {
36  $this->serverBackup = $_SERVER;
37  parent::setUp();
38  }
39 
40  protected function ‪tearDown(): void
41  {
42  $_SERVER = ‪$this->serverBackup;
43  parent::tearDown();
44  }
45 
52  protected static function ‪simulateWebRequest(string $publicDir, string $subDirectory = '/'): void
53  {
54  $_SERVER['HTTP_HOST'] = 'localhost';
55  $_SERVER['SCRIPT_NAME'] = $subDirectory . 'index.php';
56 
59  false,
60  true,
62  $publicDir,
65  $publicDir . '/index.php',
66  ‪Environment::isWindows() ? 'WINDOWS' : 'UNIX'
67  );
68  }
69 
70  protected static function ‪simulateWebRequestInComposerMode(): void
71  {
73  }
74 
75  protected static function ‪simulateWebRequestInComposerModeInSubDirectory(string $subDirectory = '/subDir/'): void
76  {
77  ‪self::simulateWebRequest(‪Environment::getPublicPath() . '/typo3temp', $subDirectory);
78  }
79 
80  protected static function ‪simulateTraditionalWebRequest(): void
81  {
83  }
84 
85  protected static function ‪simulateTraditionalWebRequestInSubDirectory(string $subDirectory = '/subDir/'): void
86  {
88  }
89 
94  {
95  $this->expectException(InvalidFileException::class);
96  $this->expectExceptionCode(1630089406);
97  ‪PathUtility::getPublicResourceWebPath('typo3/sysext/core/Resources/Public/Icons/Extension.svg');
98  }
99 
104  {
106  $this->expectException(InvalidFileException::class);
107  $this->expectExceptionCode(1635268969);
108  ‪PathUtility::getPublicResourceWebPath('EXT:core/Resources/Private/Font/nimbus.ttf');
109  }
110 
112  {
113  return [
114  'public assets are resolved to absolute url' => [
115  'EXT:core/Resources/Public/Icons/Extension.svg',
116  '/typo3/sysext/core/Resources/Public/Icons/Extension.svg',
118  ],
119  'public assets are resolved to relative url on cli' => [
120  'EXT:core/Resources/Public/Icons/Extension.svg',
121  'typo3/sysext/core/Resources/Public/Icons/Extension.svg',
122  fn() => true,
123  ],
124  'public assets are resolved to absolute url with sub directory prefixed' => [
125  'EXT:core/Resources/Public/Icons/Extension.svg',
126  '/cms/typo3/sysext/core/Resources/Public/Icons/Extension.svg',
128  ],
129  'public assets are resolved to absolute url of published assets in Composer mode' => [
130  'EXT:core/Resources/Public/Icons/Extension.svg',
131  '/_assets/d25de869aebcd01495d2fe67ad5b0e25/Icons/Extension.svg',
133  ],
134  'public assets are resolved to absolute url of published assets in Composer mode with sub directory prefixed' => [
135  'EXT:core/Resources/Public/Icons/Extension.svg',
136  '/cms/_assets/d25de869aebcd01495d2fe67ad5b0e25/Icons/Extension.svg',
138  ],
139  ];
140  }
141 
150  public function ‪getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup): void
151  {
152  $setup();
153  self::assertSame(
154  $expectedUrl,
156  );
157  }
158 }
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tryingToResolveNonExtensionResourcesThrowsException
‪tryingToResolveNonExtensionResourcesThrowsException()
Definition: PathUtilityPublicPathsTest.php:93
‪TYPO3\CMS\Core\Utility\PathUtility
Definition: PathUtility.php:25
‪TYPO3\CMS\Core\Core\Environment\getPublicPath
‪static string getPublicPath()
Definition: Environment.php:206
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tryingToResolvePrivateResourcesFromComposerPackagesThrowsException
‪tryingToResolvePrivateResourcesFromComposerPackagesThrowsException()
Definition: PathUtilityPublicPathsTest.php:103
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequestInComposerModeInSubDirectory
‪static simulateWebRequestInComposerModeInSubDirectory(string $subDirectory='/subDir/')
Definition: PathUtilityPublicPathsTest.php:75
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequestInComposerMode
‪static simulateWebRequestInComposerMode()
Definition: PathUtilityPublicPathsTest.php:70
‪TYPO3\CMS\Core\Core\Environment\isWindows
‪static bool isWindows()
Definition: Environment.php:318
‪TYPO3\CMS\Core\Utility\PathUtility\getPublicResourceWebPath
‪static string getPublicResourceWebPath(string $resourcePath, bool $prefixWithSitePath=true)
Definition: PathUtility.php:98
‪TYPO3\CMS\Core\Tests\Unit\Utility
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateTraditionalWebRequest
‪static simulateTraditionalWebRequest()
Definition: PathUtilityPublicPathsTest.php:80
‪TYPO3\CMS\Core\Core\Environment\getContext
‪static ApplicationContext getContext()
Definition: Environment.php:141
‪TYPO3\CMS\Core\Core\Environment\getProjectPath
‪static string getProjectPath()
Definition: Environment.php:177
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateTraditionalWebRequestInSubDirectory
‪static simulateTraditionalWebRequestInSubDirectory(string $subDirectory='/subDir/')
Definition: PathUtilityPublicPathsTest.php:85
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\setUp
‪setUp()
Definition: PathUtilityPublicPathsTest.php:34
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\tearDown
‪tearDown()
Definition: PathUtilityPublicPathsTest.php:40
‪TYPO3\CMS\Core\Resource\Exception\InvalidFileException
Definition: InvalidFileException.php:23
‪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:111
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\getPublicResourceWebPathResolvesUrlsCorrectly
‪getPublicResourceWebPathResolvesUrlsCorrectly(string $pathReference, string $expectedUrl, callable $setup)
Definition: PathUtilityPublicPathsTest.php:150
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\$serverBackup
‪array $serverBackup
Definition: PathUtilityPublicPathsTest.php:32
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\$backupEnvironment
‪$backupEnvironment
Definition: PathUtilityPublicPathsTest.php:30
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:43
‪TYPO3\CMS\Core\Core\Environment\getConfigPath
‪static string getConfigPath()
Definition: Environment.php:236
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider
‪static getPublicResourceWebPathResolvesUrlsCorrectlyDataProvider()
Definition: PathUtilityPublicPathsTest.php:111
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest
Definition: PathUtilityPublicPathsTest.php:29
‪TYPO3\CMS\Core\Tests\Unit\Utility\PathUtilityPublicPathsTest\simulateWebRequest
‪static simulateWebRequest(string $publicDir, string $subDirectory='/')
Definition: PathUtilityPublicPathsTest.php:52
‪TYPO3\CMS\Core\Core\Environment\getVarPath
‪static string getVarPath()
Definition: Environment.php:218