3 declare(strict_types = 1);
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
38 protected function setUp(): void
41 $this->backendUser = $this->setUpBackendUserFromFixture(1);
42 $this->subject = GeneralUtility::makeInstance(ResourceFactory::class);
43 $this->storageRepository = GeneralUtility::makeInstance(StorageRepository::class);
48 unset($this->storageRepository, $this->subject);
56 return $this->mapToDataSet([
58 '/favicon.ico' =>
'0:/favicon.ico',
59 'favicon.ico' =>
'0:/favicon.ico',
61 '{public}//favicon.ico' =>
'0:/favicon.ico',
62 '{public}/favicon.ico' =>
'0:/favicon.ico',
65 '/fileadmin/img.png' =>
'1:/img.png',
66 'fileadmin/img.png' =>
'1:/img.png',
67 '/fileadmin/images/img.png' =>
'1:/images/img.png',
68 'fileadmin/images/img.png' =>
'1:/images/img.png',
69 '/documents/doc.pdf' =>
'2:/doc.pdf',
70 'documents/doc.pdf' =>
'2:/doc.pdf',
71 '/fileadmin/nested/images/img.png' =>
'3:/images/img.png',
72 'fileadmin/nested/images/img.png' =>
'3:/images/img.png',
74 '{public}//fileadmin/img.png' =>
'1:/img.png',
75 '{public}/fileadmin/img.png' =>
'1:/img.png',
76 '{public}//fileadmin/images/img.png' =>
'1:/images/img.png',
77 '{public}/fileadmin/images/img.png' =>
'1:/images/img.png',
78 '{public}//documents/doc.pdf' =>
'2:/doc.pdf',
79 '{public}/documents/doc.pdf' =>
'2:/doc.pdf',
80 '{public}//fileadmin/nested/images/img.png' =>
'3:/images/img.png',
81 '{public}/fileadmin/nested/images/img.png' =>
'3:/images/img.png',
84 '/files/img.png' =>
'4:/img.png',
85 'files/img.png' =>
'4:/img.png',
86 '/files/images/img.png' =>
'4:/images/img.png',
87 'files/images/img.png' =>
'4:/images/img.png',
88 '/docs/doc.pdf' =>
'5:/doc.pdf',
89 'docs/doc.pdf' =>
'5:/doc.pdf',
90 '/files/nested/images/img.png' =>
'6:/images/img.png',
91 'files/nested/images/img.png' =>
'6:/images/img.png',
93 '{public}//files/img.png' =>
'4:/img.png',
94 '{public}/files/img.png' =>
'4:/img.png',
95 '{public}//files/images/img.png' =>
'4:/images/img.png',
96 '{public}/files/images/img.png' =>
'4:/images/img.png',
97 '{public}//docs/doc.pdf' =>
'5:/doc.pdf',
98 '{public}/docs/doc.pdf' =>
'5:/doc.pdf',
99 '{public}//files/nested/images/img.png' =>
'6:/images/img.png',
100 '{public}/files/nested/images/img.png' =>
'6:/images/img.png',
110 public function bestStorageIsResolved(
string $sourceIdentifier,
string $expectedCombinedIdentifier): void
114 $storage = $this->subject->getStorageObject(0, [], $sourceIdentifier);
115 $combinedIdentifier = sprintf(
'%d:%s', $storage->getUid(), $sourceIdentifier);
117 $expectedCombinedIdentifier,
119 sprintf(
'Given identifier "%s"', $sourceIdentifier)
126 $prefixDelegate =
function (
string $value) use ($publicPath):
string {
127 return $publicPath .
'/' . $value;
131 $relativeNames = [1 =>
'fileadmin/', 2 =>
'documents/', 3 =>
'fileadmin/nested/'];
132 $absoluteNames = array_map($prefixDelegate, [4 =>
'files/', 5 =>
'docs/', 6 =>
'files/nested']);
133 foreach ($relativeNames as $relativeName) {
134 $this->storageRepository->createLocalStorage(
'rel:' . $relativeName, $relativeName,
'relative');
136 foreach ($absoluteNames as $absoluteName) {
137 $this->storageRepository->createLocalStorage(
'abs:' . $absoluteName, $absoluteName,
'absolute');
140 $outsideName = dirname($publicPath) .
'/outside/';
141 $this->storageRepository->createLocalStorage(
'abs:' . $outsideName, $outsideName,
'absolute');
148 private function mapToDataSet(array $map): array
150 array_walk($map,
function (&$item,
string $key) {
151 $item = [$key, $item];