‪TYPO3CMS  ‪main
UriBuilderTest.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\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
22 use Psr\Http\Message\ServerRequestInterface;
23 use Symfony\Component\Routing\RequestContext;
26 use ‪TYPO3\CMS\Backend\Routing\UriBuilder as BackendUriBuilder;
47 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
48 
49 final class ‪UriBuilderTest extends UnitTestCase
50 {
51  protected bool ‪$resetSingletonInstances = true;
52 
53  protected function ‪setUp(): void
54  {
55  parent::setUp();
56  $backendEntryPointResolver = new ‪BackendEntryPointResolver();
57  $requestContextFactory = new ‪RequestContextFactory($backendEntryPointResolver);
58  $router = new ‪Router($requestContextFactory, $backendEntryPointResolver);
59  $router->addRoute('module_key', new ‪Route('/test/Path', []));
60  $router->addRoute('module_key.controller_action', new ‪Route('/test/Path/Controller/action', []));
61  $router->addRoute('module_key.controller2_action2', new ‪Route('/test/Path/Controller2/action2', []));
62  $router->addRoute('module_key2', new ‪Route('/test/Path2', []));
63  $router->addRoute('', new ‪Route('', []));
64  $formProtectionFactory = $this->createMock(FormProtectionFactory::class);
65  $formProtectionFactory->method('createForType')->willReturn(new ‪DisabledFormProtection());
66  GeneralUtility::setSingletonInstance(BackendUriBuilder::class, new BackendUriBuilder($router, $formProtectionFactory, $requestContextFactory));
67  }
68 
69  private function ‪getRequestWithRouteAttribute(string $routeIdentifier = 'module_key', string $baseUri = ''): ServerRequestInterface
70  {
71  return (new ‪ServerRequest(new ‪Uri($baseUri)))->withAttribute('route', new ‪Route('/test/Path', ['_identifier' => $routeIdentifier]));
72  }
73 
74  #[Test]
75  public function ‪settersAndGettersWorkAsExpected(): void
76  {
77  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
78  $subject
79  ->reset()
80  ->setArguments(['test' => 'arguments'])
81  ->setSection('testSection')
82  ->setFormat('testFormat')
83  ->setCreateAbsoluteUri(true)
84  ->setAbsoluteUriScheme('https')
85  ->setAddQueryString(true)
86  ->setArgumentsToBeExcludedFromQueryString(['test' => 'addQueryStringExcludeArguments'])
87  ->setArgumentPrefix('testArgumentPrefix')
88  ->setLinkAccessRestrictedPages(true)
89  ->setTargetPageUid(123)
90  ->setTargetPageType(321)
91  ->setNoCache(true);
92  self::assertEquals(['test' => 'arguments'], $subject->getArguments());
93  self::assertEquals('testSection', $subject->getSection());
94  self::assertEquals('testFormat', $subject->getFormat());
95  self::assertTrue($subject->getCreateAbsoluteUri());
96  self::assertEquals('https', $subject->getAbsoluteUriScheme());
97  self::assertTrue($subject->getAddQueryString());
98  self::assertEquals(['test' => 'addQueryStringExcludeArguments'], $subject->getArgumentsToBeExcludedFromQueryString());
99  self::assertEquals('testArgumentPrefix', $subject->getArgumentPrefix());
100  self::assertTrue($subject->getLinkAccessRestrictedPages());
101  self::assertEquals(123, $subject->getTargetPageUid());
102  self::assertEquals(321, $subject->getTargetPageType());
103  self::assertTrue($subject->getNoCache());
104  }
105 
106  #[Test]
108  {
109  $expectedArguments = ['foo' => 'bar', 'baz' => ['extbase' => 'fluid'], 'controller' => 'SomeController'];
110  ‪$GLOBALS['TSFE'] = null;
111  $mockRequest = $this->createMock(Request::class);
112  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
113  $mockExtensionService = $this->createMock(ExtensionService::class);
114  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
115  $subject->setRequest($mockRequest);
116  $subject->uriFor(null, ['foo' => 'bar', 'baz' => ['extbase' => 'fluid']], 'SomeController', 'SomeExtension', 'SomePlugin');
117  self::assertEquals($expectedArguments, $subject->getArguments());
118  }
119 
120  #[Test]
122  {
123  $arguments = ['foo' => 'bar', 'additionalParam' => 'additionalValue'];
124  $controllerArguments = ['foo' => 'overruled', 'baz' => ['extbase' => 'fluid']];
125  $expectedArguments = ['foo' => 'overruled', 'baz' => ['extbase' => 'fluid'], 'controller' => 'SomeController', 'additionalParam' => 'additionalValue'];
126  $mockRequest = $this->createMock(Request::class);
127  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
128  $mockExtensionService = $this->createMock(ExtensionService::class);
129  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
130  $subject->setRequest($mockRequest);
131  $subject->setArguments($arguments);
132  $subject->uriFor(null, $controllerArguments, 'SomeController', 'SomeExtension', 'SomePlugin');
133  self::assertEquals($expectedArguments, $subject->getArguments());
134  }
135 
136  #[Test]
138  {
139  $expectedArguments = ['controller' => 'SomeController'];
140  $mockRequest = $this->createMock(Request::class);
141  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
142  $mockExtensionService = $this->createMock(ExtensionService::class);
143  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
144  $subject->setRequest($mockRequest);
145  $subject->uriFor(null, [], 'SomeController', 'SomeExtension', 'SomePlugin');
146  self::assertEquals($expectedArguments, $subject->getArguments());
147  }
148 
149  #[Test]
151  {
152  $mockRequest = $this->createMock(Request::class);
153  $mockRequest->expects(self::once())->method('getControllerName')->willReturn('SomeControllerFromRequest');
154  $expectedArguments = ['controller' => 'SomeControllerFromRequest'];
155  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
156  $mockExtensionService = $this->createMock(ExtensionService::class);
157  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
158  $subject->setRequest($mockRequest);
159  $subject->uriFor(null, [], null, 'SomeExtension', 'SomePlugin');
160  self::assertEquals($expectedArguments, $subject->getArguments());
161  }
162 
163  #[Test]
165  {
166  $mockRequest = $this->createMock(Request::class);
167  $mockRequest->expects(self::once())->method('getControllerExtensionName')->willReturn('SomeExtensionNameFromRequest');
168  $expectedArguments = ['controller' => 'SomeController'];
169  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
170  $mockExtensionService = $this->createMock(ExtensionService::class);
171  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
172  $subject->setRequest($mockRequest);
173  $subject->uriFor(null, [], 'SomeController', null, 'SomePlugin');
174  self::assertEquals($expectedArguments, $subject->getArguments());
175  }
176 
177  #[Test]
179  {
180  $mockRequest = $this->createMock(Request::class);
181  $mockExtensionService = $this->createMock(ExtensionService::class);
182  $mockExtensionService->expects(self::once())->method('getPluginNamespace')->willReturn('tx_someextension_somepluginnamefromrequest');
183  $mockRequest->expects(self::once())->method('getPluginName')->willReturn('SomePluginNameFromRequest');
184  $expectedArguments = ['tx_someextension_somepluginnamefromrequest' => ['controller' => 'SomeController']];
185  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_FE);
186  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
187  $subject->setRequest($mockRequest);
188  $subject->uriFor(null, [], 'SomeController', 'SomeExtension');
189  self::assertEquals($expectedArguments, $subject->getArguments());
190  }
191  #[Test]
193  {
194  $mockRequest = $this->createMock(Request::class);
195  $mockRequest->expects(self::once())->method('getPluginName')->willReturn('SomePluginNameFromRequest');
196  $expectedArguments = ['controller' => 'SomeController'];
197  $mockRequest->method('getAttribute')->with('applicationType')->willReturn(‪SystemEnvironmentBuilder::REQUESTTYPE_BE);
198  $mockExtensionService = $this->createMock(ExtensionService::class);
199  $subject = $this->getAccessibleMock(UriBuilder::class, ['build'], [$mockExtensionService]);
200  $subject->setRequest($mockRequest);
201  $subject->uriFor(null, [], 'SomeController', 'SomeExtension');
202  self::assertEquals($expectedArguments, $subject->getArguments());
203  }
204 
205  #[Test]
207  {
208  $extbaseParameters = new ‪ExtbaseRequestParameters();
209  $serverRequest = $this->‪getRequestWithRouteAttribute()->withQueryParams(['id' => 'pageId', 'foo' => 'bar'])
210  ->withAttribute('extbase', $extbaseParameters);
211  $request = new ‪Request($serverRequest);
212  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
213  $subject->setRequest($request);
214  $subject->setAddQueryString(true);
215  $expectedResult = '/typo3/test/Path?token=dummyToken&id=pageId&foo=bar';
216  self::assertEquals($expectedResult, $subject->buildBackendUri());
217  // Check "untrusted" setting, which in BE context is the same as setting the property to TRUE
218  $subject->setAddQueryString('untrusted');
219  self::assertEquals($expectedResult, $subject->buildBackendUri());
220  }
221 
222  #[Test]
224  {
225  $extbaseParameters = new ‪ExtbaseRequestParameters();
226  $serverRequest = $this->‪getRequestWithRouteAttribute('module_key2')
227  ->withQueryParams(['route' => 'module_key', 'id' => 'pageId', 'foo' => 'bar'])
228  ->withAttribute('extbase', $extbaseParameters);
229  $request = new ‪Request($serverRequest);
230  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
231  $subject->setRequest($request);
232  $subject->setAddQueryString(true);
233  $expectedResult = '/typo3/test/Path2?token=dummyToken&id=pageId&foo=bar';
234  self::assertEquals($expectedResult, $subject->buildBackendUri());
235  // Check "untrusted" setting, which in BE context is the same as setting the property to TRUE
236  $subject->setAddQueryString('untrusted');
237  self::assertEquals($expectedResult, $subject->buildBackendUri());
238  }
239 
241  {
242  return [
243  'Arguments to be excluded in the beginning' => [
244  [
245  'id' => 'pageId',
246  'myparam' => 'pageId',
247  'route' => 'module_key',
248  'foo' => 'bar',
249  ],
250  [
251  'myparam',
252  'id',
253  ],
254  '/typo3/test/Path?token=dummyToken&foo=bar',
255  ],
256  'Arguments to be excluded in the end' => [
257  [
258  'foo' => 'bar',
259  'route' => 'module_key',
260  'id' => 'pageId',
261  'myparam' => 'anyway',
262  ],
263  [
264  'id',
265  'myparam',
266  ],
267  '/typo3/test/Path?token=dummyToken&foo=bar',
268  ],
269  'Arguments in nested array to be excluded' => [
270  [
271  'tx_foo' => [
272  'bar' => 'baz',
273  ],
274  'id' => 'pageId',
275  'route' => 'module_key',
276  ],
277  [
278  'id',
279  'tx_foo[bar]',
280  ],
281  '/typo3/test/Path?token=dummyToken',
282  ],
283  'Arguments in multidimensional array to be excluded' => [
284  [
285  'tx_foo' => [
286  'bar' => [
287  'baz' => 'bay',
288  ],
289  ],
290  'id' => 'pageId',
291  'route' => 'module_key',
292  ],
293  [
294  'id',
295  'tx_foo[bar][baz]',
296  ],
297  '/typo3/test/Path?token=dummyToken',
298  ],
299  ];
300  }
301 
302  #[DataProvider('buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSetDataProvider')]
303  #[Test]
304  public function ‪buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSet(array $parameters, array $excluded, string $expected): void
305  {
306  $serverRequest = $this->‪getRequestWithRouteAttribute()
307  ->withQueryParams($parameters)
308  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
309  $request = new ‪Request($serverRequest);
310  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
311  $subject->setRequest($request);
312  $subject->setAddQueryString(true);
313  $subject->setArgumentsToBeExcludedFromQueryString($excluded);
314  self::assertEquals($expected, $subject->buildBackendUri());
315  // Check "untrusted" setting, which in BE context is the same as setting the property to TRUE
316  $subject->setAddQueryString('untrusted');
317  self::assertEquals($expected, $subject->buildBackendUri());
318  }
319 
320  #[Test]
322  {
323  $serverRequest = $this->‪getRequestWithRouteAttribute()
324  ->withQueryParams(['id' => 'pageId', 'foo' => 'bar'])
325  ->withAttribute('extbase', new ‪ExtbaseRequestParameters())
326  ;
327  $request = new ‪Request($serverRequest);
328  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
329  $subject->setRequest($request);
330  $expectedResult = '/typo3/test/Path?token=dummyToken&id=pageId';
331  $actualResult = $subject->buildBackendUri();
332  self::assertEquals($expectedResult, $subject->buildBackendUri());
333  }
334 
335  #[Test]
337  {
338  $serverRequest = $this->‪getRequestWithRouteAttribute()
339  ->withQueryParams(['id' => 'pageId', 'foo' => 'bar'])
340  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
341  $request = new ‪Request($serverRequest);
342  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
343  $subject->setRequest($request);
344  $subject->setArguments(['route' => 'module_key2', 'somePrefix' => ['bar' => 'baz']]);
345  $expectedResult = '/typo3/test/Path2?token=dummyToken&id=pageId&somePrefix%5Bbar%5D=baz';
346  self::assertEquals($expectedResult, $subject->buildBackendUri());
347  }
348 
349  #[Test]
351  {
352  $serverRequest = $this->‪getRequestWithRouteAttribute()
353  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
354  $request = new ‪Request($serverRequest);
355  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
356  $subject->setRequest($request);
357  $mockDomainObject = $this->getAccessibleMock(AbstractEntity::class, null);
358  $mockDomainObject->_set('uid', 123);
359  $subject->setArguments(['somePrefix' => ['someDomainObject' => $mockDomainObject]]);
360  $expectedResult = '/typo3/test/Path?token=dummyToken&somePrefix%5BsomeDomainObject%5D=123';
361  self::assertEquals($expectedResult, $subject->buildBackendUri());
362  }
363 
364  #[Test]
365  public function ‪buildBackendUriRespectsSection(): void
366  {
367  $serverRequest = $this->‪getRequestWithRouteAttribute()->withAttribute('extbase', new ‪ExtbaseRequestParameters());
368  $request = new ‪Request($serverRequest);
369  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
370  $subject->setRequest($request);
371  $subject->setSection('someSection');
372  $expectedResult = '/typo3/test/Path?token=dummyToken#someSection';
373  self::assertEquals($expectedResult, $subject->buildBackendUri());
374  }
375 
376  #[Test]
378  {
379  $request = $this->‪getRequestWithRouteAttribute(baseUri: 'http://baseuri/typo3/')
380  ->withAttribute('applicationType', ‪SystemEnvironmentBuilder::REQUESTTYPE_BE)
381  ->withAttribute('normalizedParams', ‪NormalizedParams::createFromServerParams(‪$_SERVER))
382  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
383  $mvcRequest = new ‪Request($request);
384  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
385  $subject->setRequest($mvcRequest);
386  $subject->setCreateAbsoluteUri(true);
387  $subject->setArguments(['route' => 'module_key']);
388  $backendUriBuilder = GeneralUtility::makeInstance(BackendUriBuilder::class);
389  $backendUriBuilder->setRequestContext(new RequestContext(host: 'baseuri/typo3'));
390  $expectedResult = 'http://baseuri/typo3/test/Path?token=dummyToken';
391  self::assertSame($expectedResult, $subject->buildBackendUri());
392  }
393 
394  #[Test]
396  {
397  $serverRequest = $this
398  ->getRequestWithRouteAttribute()
399  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
400  $request = new ‪Request($serverRequest);
401  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
402  $subject->setRequest($request);
403  $subject->setArguments(['controller' => 'controller', 'action' => 'action']);
404  $expectedResult = '/typo3/test/Path/Controller/action?token=dummyToken';
405  self::assertSame($expectedResult, $subject->buildBackendUri());
406  }
407 
408  #[Test]
410  {
411  $serverRequest = $this
412  ->getRequestWithRouteAttribute('module_key.controller_action')
413  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
414  $request = new ‪Request($serverRequest);
415  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
416  $subject->setRequest($request);
417  $subject->setArguments(['controller' => 'controller2', 'action' => 'action2']);
418  $expectedResult = '/typo3/test/Path/Controller2/action2?token=dummyToken';
419  self::assertSame($expectedResult, $subject->buildBackendUri());
420  }
421 
422  #[Test]
424  {
425  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
426  $mockContentObject->expects(self::once())->method('createUrl')->willReturn('relative/uri');
427  $serverRequest = (new ‪ServerRequest())
428  ->withAttribute('extbase', new ‪ExtbaseRequestParameters())
429  ->withAttribute('currentContentObject', $mockContentObject);
430  $request = new ‪Request($serverRequest);
431  $expectedResult = 'relative/uri';
432  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
433  $subject->setRequest($request);
434  self::assertSame($expectedResult, $subject->buildFrontendUri());
435  }
436 
437  #[Test]
439  {
440  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
441  $mockContentObject->expects(self::once())->method('createUrl')->willReturn('/relative/uri');
442  $serverRequest = (new ‪ServerRequest())
443  ->withAttribute('extbase', new ‪ExtbaseRequestParameters())
444  ->withAttribute('currentContentObject', $mockContentObject);
445  $request = new ‪Request($serverRequest);
446  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
447  $subject->setRequest($request);
448  $expectedResult = '/relative/uri';
449  self::assertSame($expectedResult, $subject->buildFrontendUri());
450  }
451 
452  #[Test]
454  {
455  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
456  $mockContentObject->expects(self::once())->method('createUrl')->with(['foo' => 'bar', 'forceAbsoluteUrl' => true])->willReturn('http://baseuri/relative/uri');
457  $mockRequest = $this->createMock(Request::class);
458  $mockRequest->method('getAttribute')->with('currentContentObject')->willReturn($mockContentObject);
459  $subject = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration'], [], '', false);
460  $subject->setRequest($mockRequest);
461  $subject->expects(self::once())->method('buildTypolinkConfiguration')->willReturn(['foo' => 'bar']);
462  $subject->setCreateAbsoluteUri(true);
463  $expectedResult = 'http://baseuri/relative/uri';
464  self::assertSame($expectedResult, $subject->buildFrontendUri());
465  }
466 
467  #[Test]
469  {
470  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
471  $mockContentObject->expects(self::once())
472  ->method('createUrl')
473  ->with(['foo' => 'bar', 'forceAbsoluteUrl' => true, 'forceAbsoluteUrl.' => ['scheme' => 'someScheme']])
474  ->willReturn('http://baseuri/relative/uri');
475  $mockRequest = $this->createMock(Request::class);
476  $mockRequest->method('getAttribute')->with('currentContentObject')->willReturn($mockContentObject);
477  $subject = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration'], [], '', false);
478  $subject->setRequest($mockRequest);
479  $subject->expects(self::once())->method('buildTypolinkConfiguration')->willReturn(['foo' => 'bar']);
480  $subject->setCreateAbsoluteUri(true);
481  $subject->setAbsoluteUriScheme('someScheme');
482  $expectedResult = 'http://baseuri/relative/uri';
483  self::assertSame($expectedResult, $subject->buildFrontendUri());
484  }
485 
486  #[Test]
488  {
489  $uriBuilder = $this->getAccessibleMock(UriBuilder::class, ['buildTypolinkConfiguration'], [], '', false);
490  $mockRequest = $this->createMock(Request::class);
491  $mockContentObject = $this->createMock(ContentObjectRenderer::class);
492  $mockRequest->method('getAttribute')->with('currentContentObject')->willReturn($mockContentObject);
493  $uriBuilder->setRequest($mockRequest);
494  $uriBuilder->expects(self::once())->method('buildTypolinkConfiguration')->willReturn(['foo' => 'bar']);
495  $mockContentObject->expects(self::once())->method('createUrl')->with(['foo' => 'bar'])->willReturn('http://baseuri/relative/uri');
496  $uriBuilder->setCreateAbsoluteUri(false);
497  $uriBuilder->setAbsoluteUriScheme('someScheme');
498  $expectedResult = 'http://baseuri/relative/uri';
499  self::assertSame($expectedResult, $uriBuilder->buildFrontendUri());
500  }
501 
502  #[Test]
504  {
505  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
506  $subject
507  ->setArguments(['test' => 'arguments'])
508  ->setSection('testSection')
509  ->setFormat('someFormat')
510  ->setCreateAbsoluteUri(true)
511  ->setAddQueryString(true)
512  ->setArgumentsToBeExcludedFromQueryString(['test' => 'addQueryStringExcludeArguments'])
513  ->setLinkAccessRestrictedPages(true)
514  ->setTargetPageUid(123)
515  ->setTargetPageType(321)
516  ->setNoCache(true)
517  ->setArgumentPrefix('testArgumentPrefix')
518  ->setAbsoluteUriScheme('test')
519  ;
520  $subject->reset();
521  self::assertEquals([], $subject->getArguments());
522  self::assertEquals('', $subject->getSection());
523  self::assertEquals('', $subject->getFormat());
524  self::assertFalse($subject->getCreateAbsoluteUri());
525  self::assertFalse($subject->getAddQueryString());
526  self::assertEquals([], $subject->getArgumentsToBeExcludedFromQueryString());
527  self::assertEquals('', $subject->getArgumentPrefix());
528  self::assertFalse($subject->getLinkAccessRestrictedPages());
529  self::assertNull($subject->getTargetPageUid());
530  self::assertEquals(0, $subject->getTargetPageType());
531  self::assertFalse($subject->getNoCache());
532  self::assertFalse($subject->getNoCache());
533  self::assertNull($subject->getAbsoluteUriScheme());
534  }
535 
536  #[Test]
538  {
539  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
540  $subject->setTargetPageUid(321);
541  $expectedConfiguration = ['parameter' => 321];
542  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
543  }
544 
545  #[Test]
547  {
548  $pageInformation = new ‪PageInformation();
549  $pageInformation->setId(123);
550  $request = (new ‪ServerRequest())
551  ->withAttribute('frontend.page.information', $pageInformation)
552  ->withAttribute('extbase', new ‪ExtbaseRequestParameters());
553  $request = (new ‪Request($request));
554  $currentContentObject = new ‪ContentObjectRenderer();
555  $currentContentObject->setRequest($request);
556  $request = $request->withAttribute('currentContentObject', $currentContentObject);
557  ‪$GLOBALS['TYPO3_REQUEST'] = $request;
558  $expectedConfiguration = ['parameter' => 123];
559  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
560  $subject->setRequest($request);
561  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
562  }
563 
564  #[Test]
566  {
567  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
568  $subject->setTargetPageUid(123);
569  $subject->setArguments(['foo' => 'bar', 'baz' => ['extbase' => 'fluid']]);
570  $expectedConfiguration = ['parameter' => 123, 'additionalParams' => '&foo=bar&baz%5Bextbase%5D=fluid'];
571  $actualConfiguration = $subject->_call('buildTypolinkConfiguration');
572  self::assertEquals($expectedConfiguration, $actualConfiguration);
573  }
574 
576  {
577  yield 'AddQueryString not set' => [
578  null,
579  ['parameter' => 123],
580  ];
581  yield 'AddQueryString set to FALSE' => [
582  false,
583  ['parameter' => 123],
584  ];
585  yield 'AddQueryString set to "FALSE"' => [
586  'false',
587  ['parameter' => 123],
588  ];
589  yield 'AddQueryString set to 0' => [
590  0,
591  ['parameter' => 123],
592  ];
593  yield 'AddQueryString set to "0"' => [
594  '0',
595  ['parameter' => 123],
596  ];
597  yield 'AddQueryString set to TRUE' => [
598  true,
599  ['parameter' => 123, 'addQueryString' => 1],
600  ];
601  yield 'AddQueryString set to "TRUE"' => [
602  'true',
603  ['parameter' => 123, 'addQueryString' => 'true'],
604  ];
605  yield 'AddQueryString set to 1' => [
606  1,
607  ['parameter' => 123, 'addQueryString' => 1],
608  ];
609  yield 'AddQueryString set to "1"' => [
610  '1',
611  ['parameter' => 123, 'addQueryString' => 1],
612  ];
613  yield 'AddQueryString set to \'untrusted\'' => [
614  'untrusted',
615  ['parameter' => 123, 'addQueryString' => 'untrusted'],
616  ];
617  }
618 
619  #[DataProvider('buildTypolinkConfigurationProperlySetsAddQueryStringDataProvider')]
620  #[Test]
621  public function ‪buildTypolinkConfigurationProperlySetsAddQueryString(bool|string|int|null $addQueryString, array $expectedConfiguration): void
622  {
623  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
624  $subject->setTargetPageUid(123);
625  if ($addQueryString !== null) {
626  $subject->setAddQueryString($addQueryString);
627  }
628  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
629  }
630 
631  #[Test]
633  {
634  $mockDomainObject1 = $this->getAccessibleMock(AbstractEntity::class, null);
635  $mockDomainObject1->_set('uid', 123);
636  $mockDomainObject2 = $this->getAccessibleMock(AbstractEntity::class, null);
637  $mockDomainObject2->_set('uid', 321);
638  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
639  $subject->setTargetPageUid(123);
640  $subject->setArguments([
641  'someDomainObject' => $mockDomainObject1,
642  'baz' => ['someOtherDomainObject' => $mockDomainObject2],
643  ]);
644  $expectedConfiguration = ['parameter' => 123, 'additionalParams' => '&someDomainObject=123&baz%5BsomeOtherDomainObject%5D=321'];
645  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
646  }
647 
648  #[Test]
650  {
651  $mockExtensionService = $this->createMock(ExtensionService::class);
652  $mockExtensionService->method('getTargetPageTypeByFormat')->with('SomeExtensionNameFromRequest', 'txt')->willReturn(2);
653  $mockRequest = $this->createMock(Request::class);
654  $mockRequest->expects(self::once())->method('getControllerExtensionName')->willReturn('SomeExtensionNameFromRequest');
655  $subject = $this->getAccessibleMock(UriBuilder::class, null, [$mockExtensionService]);
656  $subject->setRequest($mockRequest);
657  $subject->setTargetPageUid(123);
658  $subject->setFormat('txt');
659  $expectedConfiguration = ['parameter' => '123,2'];
660  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
661  }
662 
663  #[Test]
665  {
666  $mockExtensionService = $this->createMock(ExtensionService::class);
667  $mockExtensionService->method('getTargetPageTypeByFormat')->with(null, 'txt')->willReturn(0);
668  $subject = $this->getAccessibleMock(UriBuilder::class, null, [$mockExtensionService]);
669  $subject->setTargetPageUid(123);
670  $subject->setFormat('txt');
671  $mockRequest = $this->createMock(Request::class);
672  $subject->setRequest($mockRequest);
673  $expectedConfiguration = ['parameter' => '123,0'];
674  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
675  }
676 
677  #[Test]
679  {
680  $mockExtensionService = $this->createMock(ExtensionService::class);
681  $mockExtensionService->method('getTargetPageTypeByFormat')->with(null, 'txt')->willReturn(0);
682  $subject = $this->getAccessibleMock(UriBuilder::class, null, [$mockExtensionService]);
683  $subject->setTargetPageUid(123);
684  $subject->setFormat('txt');
685  $subject->setRequest($this->createMock(Request::class));
686  $expectedConfiguration = ['parameter' => '123,0'];
687  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
688  }
689 
690  #[Test]
692  {
693  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
694  $subject->setTargetPageUid(123);
695  $subject->setNoCache(true);
696  $expectedConfiguration = ['parameter' => 123, 'no_cache' => 1];
697  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
698  }
699 
700  #[Test]
702  {
703  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
704  $subject->setTargetPageUid(123);
705  $subject->setSection('SomeSection');
706  $expectedConfiguration = ['parameter' => 123, 'section' => 'SomeSection'];
707  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
708  }
709 
710  #[Test]
712  {
713  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
714  $subject->setTargetPageUid(123);
715  $subject->setLinkAccessRestrictedPages(true);
716  $expectedConfiguration = ['parameter' => 123, 'linkAccessRestrictedPages' => 1];
717  self::assertEquals($expectedConfiguration, $subject->_call('buildTypolinkConfiguration'));
718  }
719 
720  #[Test]
722  {
723  $mockDomainObject1 = $this->getAccessibleMock(AbstractEntity::class, null);
724  $mockDomainObject1->_set('uid', 123);
725  $mockDomainObject2 = $this->getAccessibleMock(AbstractEntity::class, null);
726  $mockDomainObject2->_set('uid', 321);
727  $expectedResult = ['foo' => ['bar' => 'baz'], 'domainObject1' => '123', 'second' => ['domainObject2' => '321']];
728  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
729  $actualResult = $subject->_call('convertDomainObjectsToIdentityArrays', ['foo' => ['bar' => 'baz'], 'domainObject1' => $mockDomainObject1, 'second' => ['domainObject2' => $mockDomainObject2]]);
730  self::assertEquals($expectedResult, $actualResult);
731  }
732 
733  #[Test]
735  {
736  $objectStorage = new ‪ObjectStorage();
737  $mockChildObject1 = $this->getAccessibleMock(AbstractEntity::class, null);
738  $mockChildObject1->_set('uid', 123);
739  $objectStorage->attach($mockChildObject1);
740  $expectedResult = ['foo' => ['bar' => 'baz'], 'objectStorage' => ['123']];
741  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
742  self::assertEquals($expectedResult, $subject->_call('convertDomainObjectsToIdentityArrays', ['foo' => ['bar' => 'baz'], 'objectStorage' => $objectStorage]));
743  }
744 
745  #[Test]
747  {
748  $mockValueObject = new ‪ValueObjectFixture();
749  $mockValueObject->name = 'foo';
750  $subject = $this->getAccessibleMock(UriBuilder::class, ['convertTransientObjectToArray'], [], '', false);
751  $subject->expects(self::once())->method('convertTransientObjectToArray')->willReturn(['foo' => 'bar']);
752  $expectedResult = ['object' => ['foo' => 'bar']];
753  self::assertEquals($expectedResult, $subject->_call('convertDomainObjectsToIdentityArrays', ['object' => $mockValueObject]));
754  }
755 
756  #[Test]
758  {
759  $this->expectException(InvalidArgumentValueException::class);
760  $this->expectExceptionCode(1260881688);
761  $mockEntity = new ‪EntityFixture();
762  $mockEntity->name = 'foo';
763  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
764  $subject->_call('convertDomainObjectsToIdentityArrays', ['object' => $mockEntity]);
765  }
766 
767  #[Test]
769  {
770  $mockValueObject = new ‪ValueObjectFixture();
771  $mockValueObject->name = 'foo';
772  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
773  $expectedResult = ['name' => 'foo', 'object' => null, 'uid' => null, 'pid' => null];
774  self::assertEquals($expectedResult, $subject->_call('convertTransientObjectToArray', $mockValueObject));
775  }
776 
777  #[Test]
779  {
780  $mockValueObject = new ‪ValueObjectFixture();
781  $objectStorage = new ‪ObjectStorage();
782  $mockValueObject->name = 'foo';
783  $mockValueObject2 = new ‪ValueObjectFixture();
784  $mockValueObject2->name = 'bar';
785  $objectStorage->attach($mockValueObject2);
786  $mockValueObject->object = $objectStorage;
787  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
788  $expectedResult = [
789  'name' => 'foo',
790  'object' => [
791  [
792  'name' => 'bar',
793  'uid' => null,
794  'pid' => null,
795  'object' => null,
796  ],
797  ],
798  'uid' => null,
799  'pid' => null,
800  ];
801  self::assertEquals($expectedResult, $subject->_call('convertTransientObjectToArray', $mockValueObject));
802  }
803 
804  #[Test]
806  {
807  $mockInnerValueObject2 = new ‪ValueObjectFixture();
808  $mockInnerValueObject2->name = 'foo';
809  $mockInnerValueObject2->uid = 99;
810  $mockInnerValueObject1 = new ‪ValueObjectFixture();
811  $mockInnerValueObject1->object = $mockInnerValueObject2;
812  $mockValueObject = new ‪ValueObjectFixture();
813  $mockValueObject->object = $mockInnerValueObject1;
814  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
815  $expectedResult = [
816  'name' => null,
817  'object' => [
818  'name' => null,
819  'object' => 99,
820  'uid' => null,
821  'pid' => null,
822  ],
823  'uid' => null,
824  'pid' => null,
825  ];
826  self::assertEquals($expectedResult, $subject->_call('convertTransientObjectToArray', $mockValueObject));
827  }
828 
830  {
831  return [
832  'Extbase ObjectStorage' => [new ‪ObjectStorage()],
833  'SplObjectStorage' => [new \SplObjectStorage()],
834  'ArrayIterator' => [new \ArrayIterator()],
835  ];
836  }
837 
838  #[DataProvider('convertIteratorToArrayConvertsIteratorsToArrayProvider')]
839  #[Test]
840  public function ‪convertIteratorToArrayConvertsIteratorsToArray($iterator): void
841  {
842  $subject = $this->getAccessibleMock(UriBuilder::class, null, [], '', false);
843  self::assertIsArray($subject->_call('convertIteratorToArray', $iterator));
844  }
845 }
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriConvertsDomainObjectsAfterArgumentsHaveBeenMerged
‪buildBackendUriConvertsDomainObjectsAfterArgumentsHaveBeenMerged()
Definition: UriBuilderTest.php:350
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationConsidersSection
‪buildTypolinkConfigurationConsidersSection()
Definition: UriBuilderTest.php:701
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForRecursivelyMergesAndOverrulesControllerArgumentsWithArguments
‪uriForRecursivelyMergesAndOverrulesControllerArgumentsWithArguments()
Definition: UriBuilderTest.php:121
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationRespectsSpecifiedTargetPageUid
‪buildTypolinkConfigurationRespectsSpecifiedTargetPageUid()
Definition: UriBuilderTest.php:537
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationUsesCurrentPageUidIfTargetPageUidIsNotSet
‪buildTypolinkConfigurationUsesCurrentPageUidIfTargetPageUidIsNotSet()
Definition: UriBuilderTest.php:546
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriCreatesAbsoluteUrisIfSpecified
‪buildBackendUriCreatesAbsoluteUrisIfSpecified()
Definition: UriBuilderTest.php:377
‪TYPO3\CMS\Core\FormProtection\DisabledFormProtection
Definition: DisabledFormProtection.php:23
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\Fixtures\ValueObjectFixture
Definition: ValueObjectFixture.php:26
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForSetsPluginNameFromRequestIfPluginNameIsNotSet
‪uriForSetsPluginNameFromRequestIfPluginNameIsNotSet()
Definition: UriBuilderTest.php:192
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationDisablesCacheHashIfNoCacheIsSet
‪buildTypolinkConfigurationDisablesCacheHashIfNoCacheIsSet()
Definition: UriBuilderTest.php:691
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForOnlySetsActionArgumentIfSpecified
‪uriForOnlySetsActionArgumentIfSpecified()
Definition: UriBuilderTest.php:137
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForPrefixesArgumentsWithExtensionAndPluginNameAndSetsControllerArgument
‪uriForPrefixesArgumentsWithExtensionAndPluginNameAndSetsControllerArgument()
Definition: UriBuilderTest.php:107
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\convertDomainObjectsToIdentityArraysConvertsObjectStoragesWithDomainObjects
‪convertDomainObjectsToIdentityArraysConvertsObjectStoragesWithDomainObjects()
Definition: UriBuilderTest.php:734
‪TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder
Definition: UriBuilder.php:38
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder
Definition: SystemEnvironmentBuilder.php:41
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriKeepsQueryParametersIfAddQueryStringIsSet
‪buildBackendUriKeepsQueryParametersIfAddQueryStringIsSet()
Definition: UriBuilderTest.php:206
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendRespectsGivenControllerActionArguments
‪buildBackendRespectsGivenControllerActionArguments()
Definition: UriBuilderTest.php:395
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationProperlySetsAddQueryString
‪buildTypolinkConfigurationProperlySetsAddQueryString(bool|string|int|null $addQueryString, array $expectedConfiguration)
Definition: UriBuilderTest.php:621
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\$resetSingletonInstances
‪bool $resetSingletonInstances
Definition: UriBuilderTest.php:51
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendOverwritesSubRouteIdentifierControllerActionArguments
‪buildBackendOverwritesSubRouteIdentifierControllerActionArguments()
Definition: UriBuilderTest.php:409
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\transientObjectsAreConvertedToAnArrayOfProperties
‪transientObjectsAreConvertedToAnArrayOfProperties()
Definition: UriBuilderTest.php:768
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationProperlySetsAddQueryStringDataProvider
‪static buildTypolinkConfigurationProperlySetsAddQueryStringDataProvider()
Definition: UriBuilderTest.php:575
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_BE
‪const REQUESTTYPE_BE
Definition: SystemEnvironmentBuilder.php:45
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\resetSetsAllOptionsToTheirDefaultValue
‪resetSetsAllOptionsToTheirDefaultValue()
Definition: UriBuilderTest.php:503
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentValueException
Definition: InvalidArgumentValueException.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\Fixtures\EntityFixture
Definition: EntityFixture.php:26
‪TYPO3\CMS\Extbase\DomainObject\AbstractEntity
Definition: AbstractEntity.php:22
‪TYPO3\CMS\Backend\Routing\Route
Definition: Route.php:24
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriRespectsSection
‪buildBackendUriRespectsSection()
Definition: UriBuilderTest.php:365
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForSetsPluginNameFromRequestIfPluginNameIsNotSetInFrontend
‪uriForSetsPluginNameFromRequestIfPluginNameIsNotSetInFrontend()
Definition: UriBuilderTest.php:178
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForSetsExtensionNameFromRequestIfExtensionNameIsNotSet
‪uriForSetsExtensionNameFromRequestIfExtensionNameIsNotSet()
Definition: UriBuilderTest.php:164
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\getRequestWithRouteAttribute
‪getRequestWithRouteAttribute(string $routeIdentifier='module_key', string $baseUri='')
Definition: UriBuilderTest.php:69
‪TYPO3\CMS\Extbase\Persistence\ObjectStorage
Definition: ObjectStorage.php:34
‪TYPO3\CMS\Core\Http\Uri
Definition: Uri.php:30
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\convertIteratorToArrayConvertsIteratorsToArrayProvider
‪static convertIteratorToArrayConvertsIteratorsToArrayProvider()
Definition: UriBuilderTest.php:829
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfFormatIsNotMapped
‪buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfFormatIsNotMapped()
Definition: UriBuilderTest.php:678
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationResolvesPageTypeFromFormat
‪buildTypolinkConfigurationResolvesPageTypeFromFormat()
Definition: UriBuilderTest.php:649
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildFrontendUriDoesNotStripLeadingSlashesFromRelativeUris
‪buildFrontendUriDoesNotStripLeadingSlashesFromRelativeUris()
Definition: UriBuilderTest.php:438
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\convertIteratorToArrayConvertsIteratorsToArray
‪convertIteratorToArrayConvertsIteratorsToArray($iterator)
Definition: UriBuilderTest.php:840
‪TYPO3\CMS\Backend\Routing\UriBuilder
Definition: UriBuilder.php:44
‪TYPO3\CMS\Core\Http\NormalizedParams\createFromServerParams
‪static static createFromServerParams(array $serverParams, array $systemConfiguration=null)
Definition: NormalizedParams.php:824
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriMergesAndOverrulesQueryParametersWithArguments
‪buildBackendUriMergesAndOverrulesQueryParametersWithArguments()
Definition: UriBuilderTest.php:336
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\transientObjectsWithObjectStorageAreConvertedToAnArrayOfProperties
‪transientObjectsWithObjectStorageAreConvertedToAnArrayOfProperties()
Definition: UriBuilderTest.php:778
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪$_SERVER
‪$_SERVER['TYPO3_DEPRECATED_ENTRYPOINT']
Definition: legacy-backend.php:20
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSet
‪buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSet(array $parameters, array $excluded, string $expected)
Definition: UriBuilderTest.php:304
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfNoMappingIsConfigured
‪buildTypolinkConfigurationResolvesDefaultPageTypeFromFormatIfNoMappingIsConfigured()
Definition: UriBuilderTest.php:664
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationConvertsDomainObjects
‪buildTypolinkConfigurationConvertsDomainObjects()
Definition: UriBuilderTest.php:632
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\setUp
‪setUp()
Definition: UriBuilderTest.php:53
‪TYPO3\CMS\Core\FormProtection\FormProtectionFactory
Definition: FormProtectionFactory.php:43
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSetDataProvider
‪static buildBackendUriRemovesSpecifiedQueryParametersIfArgumentsToBeExcludedFromQueryStringIsSetDataProvider()
Definition: UriBuilderTest.php:240
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationLinkAccessRestrictedPagesSetting
‪buildTypolinkConfigurationLinkAccessRestrictedPagesSetting()
Definition: UriBuilderTest.php:711
‪TYPO3\CMS\Extbase\Service\ExtensionService
Definition: ExtensionService.php:34
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\settersAndGettersWorkAsExpected
‪settersAndGettersWorkAsExpected()
Definition: UriBuilderTest.php:75
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing
‪TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
Definition: ContentObjectRenderer.php:102
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildFrontendUriSetsAbsoluteUriSchemeIfSpecified
‪buildFrontendUriSetsAbsoluteUriSchemeIfSpecified()
Definition: UriBuilderTest.php:468
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildFrontendUriDoesNotSetAbsoluteUriSchemeIfCreateAbsoluteUriIsFalse
‪buildFrontendUriDoesNotSetAbsoluteUriSchemeIfCreateAbsoluteUriIsFalse()
Definition: UriBuilderTest.php:487
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest
Definition: UriBuilderTest.php:50
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\transientObjectsAreRecursivelyConverted
‪transientObjectsAreRecursivelyConverted()
Definition: UriBuilderTest.php:805
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriRouteAttributeOverrulesGetParameterIfAddQueryStringIsSet
‪buildBackendUriRouteAttributeOverrulesGetParameterIfAddQueryStringIsSet()
Definition: UriBuilderTest.php:223
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildBackendUriKeepsModuleQueryParametersIfAddQueryStringIsNotSet
‪buildBackendUriKeepsModuleQueryParametersIfAddQueryStringIsNotSet()
Definition: UriBuilderTest.php:321
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\convertDomainObjectsToIdentityArraysConvertsDomainObjects
‪convertDomainObjectsToIdentityArraysConvertsDomainObjects()
Definition: UriBuilderTest.php:721
‪TYPO3\CMS\Core\Core\SystemEnvironmentBuilder\REQUESTTYPE_FE
‪const REQUESTTYPE_FE
Definition: SystemEnvironmentBuilder.php:43
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildFrontendUriCreatesRelativeUrisByDefault
‪buildFrontendUriCreatesRelativeUrisByDefault()
Definition: UriBuilderTest.php:423
‪TYPO3\CMS\Backend\Routing\Router
Definition: Router.php:40
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\conversionOfTransientObjectsIsInvoked
‪conversionOfTransientObjectsIsInvoked()
Definition: UriBuilderTest.php:746
‪TYPO3\CMS\Core\Routing\BackendEntryPointResolver
Definition: BackendEntryPointResolver.php:29
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\conversionOfTransientObjectsThrowsExceptionForOtherThanValueObjects
‪conversionOfTransientObjectsThrowsExceptionForOtherThanValueObjects()
Definition: UriBuilderTest.php:757
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35
‪TYPO3\CMS\Frontend\Page\PageInformation
Definition: PageInformation.php:28
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildFrontendUriCreatesAbsoluteUrisIfSpecified
‪buildFrontendUriCreatesAbsoluteUrisIfSpecified()
Definition: UriBuilderTest.php:453
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\buildTypolinkConfigurationProperlySetsAdditionalArguments
‪buildTypolinkConfigurationProperlySetsAdditionalArguments()
Definition: UriBuilderTest.php:565
‪TYPO3\CMS\Core\Http\NormalizedParams
Definition: NormalizedParams.php:38
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\Web\Routing\UriBuilderTest\uriForSetsControllerFromRequestIfControllerIsNotSet
‪uriForSetsControllerFromRequestIfControllerIsNotSet()
Definition: UriBuilderTest.php:150
‪TYPO3\CMS\Core\Routing\RequestContextFactory
Definition: RequestContextFactory.php:30