‪TYPO3CMS  11.5
AbstractConfigurationManagerTest.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\MockObject\MockObject;
23 use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
24 use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪AbstractConfigurationManagerTest extends UnitTestCase
31 {
32  protected ‪$resetSingletonInstances = true;
33 
38 
43 
44  protected array ‪$testTypoScriptSetup = [
45  'foo.' => [
46  'bar' => 'baz',
47  ],
48  'config.' => [
49  'tx_extbase.' => [
50  'settings.' => [
51  'setting1' => 'value1',
52  'setting2' => 'value2',
53  ],
54  'view.' => [
55  'viewSub.' => [
56  'key1' => 'value1',
57  'key2' => 'value2',
58  ],
59  ],
60  ],
61  ],
62  ];
63  protected array ‪$testTypoScriptSetupConverted = [
64  'foo' => [
65  'bar' => 'baz',
66  ],
67  'config' => [
68  'tx_extbase' => [
69  'settings' => [
70  'setting1' => 'value1',
71  'setting2' => 'value2',
72  ],
73  'view' => [
74  'viewSub' => [
75  'key1' => 'value1',
76  'key2' => 'value2',
77  ],
78  ],
79  ],
80  ],
81  ];
82  protected array ‪$testPluginConfiguration = [
83  'settings' => [
84  'setting1' => 'overriddenValue1',
85  'setting3' => 'additionalValue',
86  ],
87  'view' => [
88  'viewSub' => [
89  'key1' => 'overridden',
90  'key3' => 'new key',
91  ],
92  ],
93  'persistence' => [
94  'storagePid' => '123',
95  ],
96  ];
97 
101  protected function ‪setUp(): void
102  {
103  parent::setUp();
104  $this->abstractConfigurationManager = $this->getAccessibleMock(
105  AbstractConfigurationManager::class,
106  [
107  'getContextSpecificFrameworkConfiguration',
108  'getTypoScriptSetup',
109  'getPluginConfiguration',
110  'getControllerConfiguration',
111  'getRecursiveStoragePids',
112  ],
113  [],
114  '',
115  false
116  );
117  $this->mockTypoScriptService = $this->getMockBuilder(TypoScriptService::class)->getMock();
118  $this->abstractConfigurationManager->_set('typoScriptService', $this->mockTypoScriptService);
119  }
120 
124  public function ‪setConfigurationResetsConfigurationCache(): void
125  {
126  $this->abstractConfigurationManager->_set('configurationCache', ['foo' => 'bar']);
127  $this->abstractConfigurationManager->setConfiguration([]);
128  self::assertEquals([], $this->abstractConfigurationManager->_get('configurationCache'));
129  }
130 
134  public function ‪setConfigurationSetsExtensionAndPluginName(): void
135  {
136  $configuration = [
137  'extensionName' => 'SomeExtensionName',
138  'pluginName' => 'SomePluginName',
139  ];
140  $this->abstractConfigurationManager->setConfiguration($configuration);
141  self::assertEquals('SomeExtensionName', $this->abstractConfigurationManager->_get('extensionName'));
142  self::assertEquals('SomePluginName', $this->abstractConfigurationManager->_get('pluginName'));
143  }
144 
149  {
150  $configuration = [
151  'foo' => 'bar',
152  'settings.' => ['foo' => 'bar'],
153  'view.' => ['subkey.' => ['subsubkey' => 'subsubvalue']],
154  ];
155  $expectedResult = [
156  'foo' => 'bar',
157  'settings' => ['foo' => 'bar'],
158  'view' => ['subkey' => ['subsubkey' => 'subsubvalue']],
159  ];
160  $this->mockTypoScriptService->expects(self::atLeastOnce())->method('convertTypoScriptArrayToPlainArray')->with($configuration)->willReturn($expectedResult);
161  $this->abstractConfigurationManager->setConfiguration($configuration);
162  self::assertEquals($expectedResult, $this->abstractConfigurationManager->_get('configuration'));
163  }
164 
169  {
170  $this->abstractConfigurationManager->_set('extensionName', 'CurrentExtensionName');
171  $this->abstractConfigurationManager->_set('pluginName', 'CurrentPluginName');
172  $this->abstractConfigurationManager->_set('configurationCache', [
173  'currentextensionname_currentpluginname' => ['foo' => 'bar'],
174  'someotherextension_somepluginname' => ['baz' => 'shouldnotbereturned'],
175  ]);
176  $expectedResult = ['foo' => 'bar'];
177  $actualResult = $this->abstractConfigurationManager->getConfiguration();
178  self::assertEquals($expectedResult, $actualResult);
179  }
180 
185  {
186  $this->abstractConfigurationManager->_set('configurationCache', [
187  'someextensionname_somepluginname' => ['foo' => 'bar'],
188  'someotherextension_somepluginname' => ['baz' => 'shouldnotbereturned'],
189  ]);
190  $expectedResult = ['foo' => 'bar'];
191  $actualResult = $this->abstractConfigurationManager->getConfiguration('SomeExtensionName', 'SomePluginName');
192  self::assertEquals($expectedResult, $actualResult);
193  }
194 
199  {
200  $this->abstractConfigurationManager->_set('extensionName', 'CurrentExtensionName');
201  $this->abstractConfigurationManager->_set('pluginName', 'CurrentPluginName');
202  $this->abstractConfigurationManager->expects(self::once())->method('getTypoScriptSetup')->willReturn($this->testTypoScriptSetup);
203  $this->mockTypoScriptService->expects(self::atLeastOnce())->method('convertTypoScriptArrayToPlainArray')->with($this->testTypoScriptSetup['config.']['tx_extbase.'])->willReturn($this->testTypoScriptSetupConverted['config']['tx_extbase']);
204  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->with(
205  'CurrentExtensionName',
206  'CurrentPluginName'
207  )->willReturn($this->testPluginConfiguration);
208  $expectedResult = [
209  'settings' => [
210  'setting1' => 'overriddenValue1',
211  'setting2' => 'value2',
212  'setting3' => 'additionalValue',
213  ],
214  'view' => [
215  'viewSub' => [
216  'key1' => 'overridden',
217  'key2' => 'value2',
218  'key3' => 'new key',
219  ],
220  ],
221  'persistence' => [
222  'storagePid' => '123',
223  ],
224  'controllerConfiguration' => [],
225  ];
226  $this->abstractConfigurationManager->expects(self::once())->method('getContextSpecificFrameworkConfiguration')->with($expectedResult)->willReturn($expectedResult);
227  $actualResult = $this->abstractConfigurationManager->getConfiguration();
228  self::assertEquals($expectedResult, $actualResult);
229  }
230 
235  ): void {
236  $this->abstractConfigurationManager->expects(self::once())->method('getTypoScriptSetup')->willReturn($this->testTypoScriptSetup);
237  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->with(
238  'SomeExtensionName',
239  'SomePluginName'
240  )->willReturn($this->testPluginConfiguration);
241  $this->mockTypoScriptService->expects(self::atLeastOnce())->method('convertTypoScriptArrayToPlainArray')->with($this->testTypoScriptSetup['config.']['tx_extbase.'])->willReturn($this->testTypoScriptSetupConverted['config']['tx_extbase']);
242  $expectedResult = [
243  'settings' => [
244  'setting1' => 'overriddenValue1',
245  'setting2' => 'value2',
246  'setting3' => 'additionalValue',
247  ],
248  'view' => [
249  'viewSub' => [
250  'key1' => 'overridden',
251  'key2' => 'value2',
252  'key3' => 'new key',
253  ],
254  ],
255  'persistence' => [
256  'storagePid' => '123',
257  ],
258  'controllerConfiguration' => [],
259  ];
260  $this->abstractConfigurationManager->expects(self::never())->method('getContextSpecificFrameworkConfiguration');
261  $actualResult = $this->abstractConfigurationManager->getConfiguration('SomeExtensionName', 'SomePluginName');
262  self::assertEquals($expectedResult, $actualResult);
263  }
264 
269  ): void {
270  $this->abstractConfigurationManager->expects(self::never())->method('getContextSpecificFrameworkConfiguration');
271  $this->abstractConfigurationManager->getConfiguration('SomeExtensionName', 'SomePluginName');
272  }
273 
278  ): void {
279  $this->abstractConfigurationManager->expects(self::once())->method('getTypoScriptSetup')->willReturn($this->testTypoScriptSetup);
280  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->with()->willReturn($this->testPluginConfiguration);
281  $contextSpecificFrameworkConfiguration = [
282  'context' => [
283  'specific' => 'framework',
284  'conf' => 'iguration',
285  ],
286  ];
287  $this->abstractConfigurationManager->expects(self::once())->method('getContextSpecificFrameworkConfiguration')->willReturn($contextSpecificFrameworkConfiguration);
288  $actualResult = $this->abstractConfigurationManager->getConfiguration();
289  self::assertEquals($contextSpecificFrameworkConfiguration, $actualResult);
290  }
291 
296  ): void {
297  $this->abstractConfigurationManager->_set('extensionName', 'CurrentExtensionName');
298  $this->abstractConfigurationManager->_set('pluginName', 'CurrentPluginName');
299  $this->abstractConfigurationManager->expects(self::once())->method('getTypoScriptSetup')->willReturn($this->testTypoScriptSetup);
300  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->with(
301  'CurrentExtensionName',
302  'CurrentPluginName'
303  )->willReturn($this->testPluginConfiguration);
304  $contextSpecificFrameworkConfiguration = [
305  'context' => [
306  'specific' => 'framework',
307  'conf' => 'iguration',
308  ],
309  ];
310  $this->abstractConfigurationManager->expects(self::once())->method('getContextSpecificFrameworkConfiguration')->willReturn($contextSpecificFrameworkConfiguration);
311  $actualResult = $this->abstractConfigurationManager->getConfiguration(
312  'CurrentExtensionName',
313  'CurrentPluginName'
314  );
315  self::assertEquals($contextSpecificFrameworkConfiguration, $actualResult);
316  }
317 
322  {
323  $this->abstractConfigurationManager->_set('extensionName', 'CurrentExtensionName');
324  $this->abstractConfigurationManager->_set('pluginName', 'CurrentPluginName');
325  $this->abstractConfigurationManager->method('getPluginConfiguration')->willReturn(['foo' => 'bar']);
326  $this->abstractConfigurationManager->getConfiguration();
327  $this->abstractConfigurationManager->getConfiguration('SomeOtherExtensionName', 'SomeOtherCurrentPluginName');
328  $expectedResult = [
329  'currentextensionname_currentpluginname',
330  'someotherextensionname_someothercurrentpluginname',
331  ];
332  $actualResult = array_keys($this->abstractConfigurationManager->_get('configurationCache'));
333  self::assertEquals($expectedResult, $actualResult);
334  }
335 
340  ): void {
341  $pluginConfiguration = [
342  'persistence' => [
343  'storagePid' => 1,
344  'recursive' => 99,
345  ],
346  ];
347  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->willReturn($pluginConfiguration);
348  $this->abstractConfigurationManager->expects(self::once())->method('getRecursiveStoragePids')->with([-1]);
349  $this->abstractConfigurationManager->getConfiguration('SomeOtherExtensionName', 'SomeOtherCurrentPluginName');
350  }
351 
356  ): void {
357  $pluginConfiguration = [
358  'persistence' => [
359  'storagePid' => '1,25',
360  'recursive' => 99,
361  ],
362  ];
363  $this->abstractConfigurationManager->expects(self::once())->method('getPluginConfiguration')->willReturn($pluginConfiguration);
364  $this->abstractConfigurationManager->expects(self::once())->method('getRecursiveStoragePids')->with([-1, -25]);
365  $this->abstractConfigurationManager->getConfiguration('SomeOtherExtensionName', 'SomeOtherCurrentPluginName');
366  }
367 
372  {
373  self::assertInstanceOf(ContentObjectRenderer::class, $this->abstractConfigurationManager->getContentObject());
374  }
375 
379  public function ‪getContentObjectTheCurrentContentObject(): void
380  {
381  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
382  $this->abstractConfigurationManager->setContentObject($mockContentObject);
383  self::assertSame($this->abstractConfigurationManager->getContentObject(), $mockContentObject);
384  }
385 }
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForMultipleStoragePid
‪getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForMultipleStoragePid()
Definition: AbstractConfigurationManagerTest.php:353
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getContentObjectReturnsInstanceOfContentObjectRenderer
‪getContentObjectReturnsInstanceOfContentObjectRenderer()
Definition: AbstractConfigurationManagerTest.php:369
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest
Definition: AbstractConfigurationManagerTest.php:31
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration
Definition: AbstractConfigurationManagerTest.php:18
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForSingleStoragePid
‪getConfigurationRetrievesStoragePidIncludingGivenStoragePidWithRecursiveSetForSingleStoragePid()
Definition: AbstractConfigurationManagerTest.php:337
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationStoresResultInConfigurationCache
‪getConfigurationStoresResultInConfigurationCache()
Definition: AbstractConfigurationManagerTest.php:319
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfSpecifiedPluginIsTheCurrentPlugin
‪getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfSpecifiedPluginIsTheCurrentPlugin()
Definition: AbstractConfigurationManagerTest.php:293
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$mockTypoScriptService
‪TypoScriptService MockObject AccessibleObjectInterface $mockTypoScriptService
Definition: AbstractConfigurationManagerTest.php:40
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getContentObjectTheCurrentContentObject
‪getContentObjectTheCurrentContentObject()
Definition: AbstractConfigurationManagerTest.php:377
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$testPluginConfiguration
‪array $testPluginConfiguration
Definition: AbstractConfigurationManagerTest.php:80
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfNoPluginWasSpecified
‪getConfigurationOverridesConfigurationWithContextSpecificFrameworkConfigurationIfNoPluginWasSpecified()
Definition: AbstractConfigurationManagerTest.php:275
‪TYPO3\CMS\Extbase\Configuration\AbstractConfigurationManager
Definition: AbstractConfigurationManager.php:34
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\setConfigurationConvertsTypoScriptArrayToPlainArray
‪setConfigurationConvertsTypoScriptArrayToPlainArray()
Definition: AbstractConfigurationManagerTest.php:146
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$abstractConfigurationManager
‪AbstractConfigurationManager MockObject AccessibleObjectInterface $abstractConfigurationManager
Definition: AbstractConfigurationManagerTest.php:36
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\setUp
‪setUp()
Definition: AbstractConfigurationManagerTest.php:99
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationReturnsCachedResultOfCurrentPlugin
‪getConfigurationReturnsCachedResultOfCurrentPlugin()
Definition: AbstractConfigurationManagerTest.php:166
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\setConfigurationSetsExtensionAndPluginName
‪setConfigurationSetsExtensionAndPluginName()
Definition: AbstractConfigurationManagerTest.php:132
‪TYPO3\CMS\Core\TypoScript\TypoScriptService
Definition: TypoScriptService.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$resetSingletonInstances
‪$resetSingletonInstances
Definition: AbstractConfigurationManagerTest.php:32
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\setConfigurationResetsConfigurationCache
‪setConfigurationResetsConfigurationCache()
Definition: AbstractConfigurationManagerTest.php:122
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationDoesNotOverrideConfigurationWithContextSpecificFrameworkConfigurationIfDifferentPluginIsSpecified
‪getConfigurationDoesNotOverrideConfigurationWithContextSpecificFrameworkConfigurationIfDifferentPluginIsSpecified()
Definition: AbstractConfigurationManagerTest.php:266
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$testTypoScriptSetupConverted
‪array $testTypoScriptSetupConverted
Definition: AbstractConfigurationManagerTest.php:61
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationReturnsCachedResultForGivenExtension
‪getConfigurationReturnsCachedResultForGivenExtension()
Definition: AbstractConfigurationManagerTest.php:182
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationRecursivelyMergesCurrentPluginConfigurationWithFrameworkConfiguration
‪getConfigurationRecursivelyMergesCurrentPluginConfigurationWithFrameworkConfiguration()
Definition: AbstractConfigurationManagerTest.php:196
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\$testTypoScriptSetup
‪array $testTypoScriptSetup
Definition: AbstractConfigurationManagerTest.php:42
‪TYPO3\CMS\Extbase\Tests\Unit\Configuration\AbstractConfigurationManagerTest\getConfigurationRecursivelyMergesPluginConfigurationOfSpecifiedPluginWithFrameworkConfiguration
‪getConfigurationRecursivelyMergesPluginConfigurationOfSpecifiedPluginWithFrameworkConfiguration()
Definition: AbstractConfigurationManagerTest.php:232