‪TYPO3CMS  ‪main
DefaultUploadFolderResolverTest.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\Test;
21 use Symfony\Component\DependencyInjection\Container;
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 
28 final class ‪DefaultUploadFolderResolverTest extends FunctionalTestCase
29 {
30  public function ‪setUp(): void
31  {
32  parent::setUp();
33  $this->importCSVDataSet(__DIR__ . '/Fixtures/DefaultUploadFolderResolver/be_users.csv');
34  $this->importCSVDataSet(__DIR__ . '/Fixtures/DefaultUploadFolderResolver/pages.csv');
35  }
36 
37  public function ‪tearDown(): void
38  {
39  ‪GeneralUtility::rmdir($this->instancePath . '/fileadmin/admin_upload/', true);
40  ‪GeneralUtility::rmdir($this->instancePath . '/fileadmin/page_upload/', true);
41  parent::tearDown();
42  }
43 
44  #[Test]
45  public function ‪resolveWithUserAndPageConfigTest(): void
46  {
47  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/page_upload/');
48  $backendUser = $this->setUpBackendUser(1);
49 
50  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
51 
52  self::assertEquals(
53  '1:/page_upload/',
54  $subject->resolve($backendUser, 1)->getCombinedIdentifier()
55  );
56  }
57 
58  #[Test]
59  public function ‪resolveWithUserConfigTest(): void
60  {
61  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/admin_upload/');
62  $backendUser = $this->setUpBackendUser(1);
63 
64  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
65 
66  self::assertEquals(
67  '1:/admin_upload/',
68  $subject->resolve($backendUser)->getCombinedIdentifier()
69  );
70  }
71 
72  #[Test]
73  public function ‪resolveWithoutConfigTest(): void
74  {
75  $backendUser = $this->setUpBackendUser(2);
76 
77  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
78 
79  self::assertEquals(
80  '1:/user_upload/',
81  $subject->resolve($backendUser)->getCombinedIdentifier()
82  );
83  }
84 
85  #[Test]
86  public function ‪getDefaultUploadFolderForUserTest(): void
87  {
88  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/admin_upload/');
89  $backendUser = $this->setUpBackendUser(1);
90 
91  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
92 
93  self::assertEquals('1:/admin_upload/', $subject->getDefaultUploadFolderForUser($backendUser)->getCombinedIdentifier());
94  }
95 
96  #[Test]
98  {
99  $backendUser = $this->setUpBackendUser(2);
100 
101  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
102 
103  self::assertNull($subject->getDefaultUploadFolderForUser($backendUser));
104  }
105 
106  #[Test]
108  {
109  $backendUser = $this->setUpBackendUser(1);
110 
111  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
112 
113  self::assertNull($subject->getDefaultUploadFolderForUser($backendUser));
114  }
115 
116  #[Test]
117  public function ‪getDefaultUploadFolderForPageTest(): void
118  {
119  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/page_upload/');
120 
121  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
122 
123  self::assertEquals('1:/page_upload/', $subject->getDefaultUploadFolderForPage(1)->getCombinedIdentifier());
124  }
125 
126  #[Test]
128  {
129  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
130 
131  self::assertNull($subject->getDefaultUploadFolderForPage(1));
132  }
133 
134  #[Test]
136  {
137  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/admin_upload/');
138  $backendUser = $this->setUpBackendUser(1);
139 
140  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
141 
143  $container = $this->get('service_container');
144  $container->set(
145  'after-default-upload-folder-was-resolved-listener',
146  static function (‪AfterDefaultUploadFolderWasResolvedEvent $event) use (&$afterDefaultUploadFolderWasResolvedEvent) {
147  $afterDefaultUploadFolderWasResolvedEvent = $event;
148  }
149  );
150 
151  $eventListener = $container->get(ListenerProvider::class);
152  $eventListener->addListener(AfterDefaultUploadFolderWasResolvedEvent::class, 'after-default-upload-folder-was-resolved-listener');
153 
154  $result = $subject->resolve($backendUser);
155  self::assertEquals($result, $afterDefaultUploadFolderWasResolvedEvent->getUploadFolder());
156  }
157 
158  #[Test]
160  {
161  ‪GeneralUtility::mkdir($this->instancePath . '/fileadmin/admin_upload/');
162  $backendUser = $this->setUpBackendUser(1);
163 
164  $subject = GeneralUtility::makeInstance(DefaultUploadFolderResolver::class);
165 
167  $container = $this->get('service_container');
168  $container->set(
169  'after-default-upload-folder-was-resolved-listener',
170  static function (‪AfterDefaultUploadFolderWasResolvedEvent $event) {
171  $event->‪setUploadFolder($event->‪getUploadFolder()->getStorage()->getFolder('/'));
172  }
173  );
174 
175  $eventListener = $container->get(ListenerProvider::class);
176  $eventListener->addListener(AfterDefaultUploadFolderWasResolvedEvent::class, 'after-default-upload-folder-was-resolved-listener');
177 
178  $result = $subject->resolve($backendUser);
179  self::assertEquals('1:/', $result->getCombinedIdentifier());
180  }
181 }
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\setUp
‪setUp()
Definition: DefaultUploadFolderResolverTest.php:30
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\afterDefaultUploadFolderWasResolvedEventIsDispatched
‪afterDefaultUploadFolderWasResolvedEventIsDispatched()
Definition: DefaultUploadFolderResolverTest.php:135
‪TYPO3\CMS\Core\Utility\GeneralUtility\mkdir
‪static bool mkdir(string $newFolder)
Definition: GeneralUtility.php:1638
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\afterDefaultUploadFolderWasResolvedEventChangedResult
‪afterDefaultUploadFolderWasResolvedEventChangedResult()
Definition: DefaultUploadFolderResolverTest.php:159
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\getDefaultUploadFolderForPageWithoutExistingFolderTest
‪getDefaultUploadFolderForPageWithoutExistingFolderTest()
Definition: DefaultUploadFolderResolverTest.php:127
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\getDefaultUploadFolderForUserWithoutExistingFolderTest
‪getDefaultUploadFolderForUserWithoutExistingFolderTest()
Definition: DefaultUploadFolderResolverTest.php:107
‪TYPO3\CMS\Core\Resource\Event\AfterDefaultUploadFolderWasResolvedEvent\setUploadFolder
‪setUploadFolder(FolderInterface $uploadFolder)
Definition: AfterDefaultUploadFolderWasResolvedEvent.php:39
‪TYPO3\CMS\Core\Tests\Functional\Resource
Definition: DefaultUploadFolderResolverTest.php:18
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest
Definition: DefaultUploadFolderResolverTest.php:29
‪TYPO3\CMS\Core\Resource\Event\AfterDefaultUploadFolderWasResolvedEvent
Definition: AfterDefaultUploadFolderWasResolvedEvent.php:26
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\resolveWithoutConfigTest
‪resolveWithoutConfigTest()
Definition: DefaultUploadFolderResolverTest.php:73
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\getDefaultUploadFolderForUserTest
‪getDefaultUploadFolderForUserTest()
Definition: DefaultUploadFolderResolverTest.php:86
‪TYPO3\CMS\Core\Resource\DefaultUploadFolderResolver
Definition: DefaultUploadFolderResolver.php:31
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\resolveWithUserAndPageConfigTest
‪resolveWithUserAndPageConfigTest()
Definition: DefaultUploadFolderResolverTest.php:45
‪TYPO3\CMS\Core\Utility\GeneralUtility\rmdir
‪static bool rmdir(string $path, bool $removeNonEmpty=false)
Definition: GeneralUtility.php:1702
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\getDefaultUploadFolderForUserWithoutConfigTest
‪getDefaultUploadFolderForUserWithoutConfigTest()
Definition: DefaultUploadFolderResolverTest.php:97
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\resolveWithUserConfigTest
‪resolveWithUserConfigTest()
Definition: DefaultUploadFolderResolverTest.php:59
‪TYPO3\CMS\Core\Resource\Event\AfterDefaultUploadFolderWasResolvedEvent\getUploadFolder
‪getUploadFolder()
Definition: AfterDefaultUploadFolderWasResolvedEvent.php:34
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\tearDown
‪tearDown()
Definition: DefaultUploadFolderResolverTest.php:37
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\EventDispatcher\ListenerProvider
Definition: ListenerProvider.php:30
‪TYPO3\CMS\Core\Tests\Functional\Resource\DefaultUploadFolderResolverTest\getDefaultUploadFolderForPageTest
‪getDefaultUploadFolderForPageTest()
Definition: DefaultUploadFolderResolverTest.php:117