‪TYPO3CMS  ‪main
RouteTest.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;
37 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
38 
40 {
41  public static function ‪routeDefaultsAreConsideredDataProvider(): array
42  {
43  $builder = ‪Builder::create();
44  // variables (applied when invoking expectations)
45  $variables = ‪Variables::create()->define([
46  'uriValue' => '',
47  'resolveValue' => 100,
48  'routePrefix' => 'enhance',
49  'aspectName' => 'value',
50  'inArguments' => 'staticArguments', // either 'dynamicArguments' or 'staticArguments'
51  'otherInArguments' => null,
52  ]);
53  $englishLanguage = ‪LanguageContext::create(0);
54  $frenchLanguage = ‪LanguageContext::create(1);
55  $plainRouteParameter = ‪VariablesContext::create(‪Variables::create(['routeParameter' => '{value}']));
56  $enforcedRouteParameter = ‪VariablesContext::create(‪Variables::create(['routeParameter' => '{!value}']));
57  return ‪Permutation::create($variables)
58  ->withTargets(
60  ->withMergedApplicables($englishLanguage)
61  ->withTargetPageId(1100)
62  ->withUrl(
64  'https://acme.us/welcome/enhance[[uriValue]][[pathSuffix]]',
65  ‪Variables::create(['pathSuffix' => '', 'uriValue' => '/hundred'])
66  )
67  ),
69  ->withMergedApplicables($frenchLanguage)
70  ->withTargetPageId(1100)
71  ->withUrl(
73  'https://acme.fr/bienvenue/enhance[[uriValue]][[pathSuffix]]',
74  ‪Variables::create(['pathSuffix' => '', 'uriValue' => '/cent'])
75  )
76  )
77  )
78  ->withApplicableItems($builder->declareEnhancers())
79  ->withApplicableSet(
80  ‪EnhancerDeclaration::create('defaults.value=100')->withConfiguration([
81  'defaults' => [
82  'value' => 100,
83  // it's expected that `other` is NOT applied in page arguments
84  // since it is not used as `{other}` in `routePath`
85  'other' => 200,
86  ],
87  ])
88  )
89  ->withApplicableSet(
90  ‪AspectDeclaration::create('StaticValueMapper')->withConfiguration([
91  ‪VariableItem::create('aspectName', [
92  'type' => 'StaticValueMapper',
93  'map' => [
94  'hundred' => 100,
95  ],
96  'localeMap' => [
97  [
98  'locale' => 'fr_FR',
99  'map' => [
100  'cent' => 100,
101  ],
102  ],
103  ],
104  ]),
105  ])
106  )
107  ->withApplicableSet($plainRouteParameter, $enforcedRouteParameter)
108  ->withApplicableSet(
109  // @todo Default route not resolved having enforced route parameter `{!value}`
111  'uriValue' => null,
112  ]))->withRequiredApplicables($plainRouteParameter),
114  'uriValue' => '/hundred',
115  ]))->withRequiredApplicables($englishLanguage),
117  'uriValue' => '/cent',
118  ]))->withRequiredApplicables($frenchLanguage)
119  )
120  ->permute()
121  ->getTargetsForDataProvider();
122  }
123 
124  #[DataProvider('routeDefaultsAreConsideredDataProvider')]
125  #[Test]
126  public function ‪routeDefaultsAreConsidered(‪TestSet $testSet): void
127  {
128  $this->‪assertPageArgumentsEquals($testSet);
129  }
130 
132  {
133  $builder = ‪Builder::create();
134  // variables (applied when invoking expectations)
135  $variables = ‪Variables::create()->define([
136  'routePrefix' => 'enhance',
137  'aspectName' => 'value',
138  'inArguments' => 'staticArguments', // either 'dynamicArguments' or 'staticArguments'
139  ]);
140  return ‪Permutation::create($variables)
141  ->withTargets(
143  ->withMergedApplicables(‪LanguageContext::create(0))
144  ->withTargetPageId(1100)
145  ->withUrl(
147  'https://acme.us/welcome/enhance/[[value]][[pathSuffix]]',
148  ‪Variables::create(['pathSuffix' => ''])
149  )
150  )
151  )
152  ->withApplicableSet(
154  'value' => 'hundred',
155  'resolveValue' => 100,
156  ])),
158  'value' => 'hundred/binary',
159  'resolveValue' => 1100100,
160  ])),
163  'value' => 'hundred',
164  'resolveValue' => 100,
165  ])),
166  ‪EnhancerDeclaration::create('requirements.value=/[a-z_/]+/')->withConfiguration([
167  'requirements' => [
168  'value' => '[a-z_/]+',
169  ],
170  ])
171  ),
174  'value' => 'hundred/binary',
175  'resolveValue' => 1100100,
176  ])),
177  ‪EnhancerDeclaration::create('requirements.value=/[a-z_/]+/')->withConfiguration([
178  'requirements' => [
179  'value' => '[a-z_/]+',
180  ],
181  ])
182  )
183  )
184  ->withApplicableItems($builder->declareEnhancers())
185  ->withApplicableSet(
186  ‪AspectDeclaration::create('StaticValueMapper')->withConfiguration([
187  ‪VariableItem::create('aspectName', [
188  'type' => 'StaticValueMapper',
189  'map' => [
190  'hundred' => 100,
191  'hundred/binary' => 1100100,
192  ],
193  ]),
194  ])
195  )
196  ->permute()
197  ->getTargetsForDataProvider();
198  }
199 
200  #[DataProvider('routeRequirementsHavingAspectsAreConsideredDataProvider')]
201  #[Test]
203  {
204  $this->‪assertPageArgumentsEquals($testSet);
205  }
206 
207  public static function ‪routeRequirementsAreConsideredDataProvider(): array
208  {
209  $builder = ‪Builder::create();
210  // variables (applied when invoking expectations)
211  $variables = ‪Variables::create()->define([
212  'resolveValue' => 100,
213  'routePrefix' => 'enhance',
214  'aspectName' => 'value',
215  'inArguments' => 'dynamicArguments', // either 'dynamicArguments' or 'staticArguments'
216  ]);
217  $enhancers = $builder->declareEnhancers();
218  $variableContexts = [
221  'cHash' => '46227b4ce096dc78a4e71463326c9020',
222  ])
223  )->withRequiredApplicables($enhancers['Simple']),
226  'cHash' => 'e24d3d2d5503baba670d827c3b9470c8',
227  ])
228  )->withRequiredApplicables($enhancers['Plugin']),
231  'cHash' => 'eef21771ab3c3dac3514b4479eedd5ff',
232  ])
233  )->withRequiredApplicables($enhancers['Extbase']),
234  ];
235  return ‪Permutation::create($variables)
236  ->withTargets(
238  ->withMergedApplicables(‪LanguageContext::create(0))
239  ->withTargetPageId(1100)
240  ->withUrl(
242  'https://acme.us/welcome/enhance/[[uriValue]][[pathSuffix]]?cHash=[[cHash]]',
243  ‪Variables::create(['pathSuffix' => ''])
244  )
245  )
246  )
247  ->withApplicableItems($enhancers)
248  ->withApplicableItems($variableContexts)
249  ->withApplicableSet(
251  'uriValue' => 100,
252  ])),
255  'uriValue' => 100,
256  'cHash' => '',
257  ])),
258  ‪ExceptionExpectation::create('Missing cHash')
259  ->withClassName(PageNotFoundException::class)
260  ->withMessage('Request parameters could not be validated (&cHash empty)')
261  ->withCode(1518472189)
262  ),
265  'uriValue' => 99,
266  ])),
268  ->withClassName(PageNotFoundException::class)
269  ->withMessage('The requested page does not exist')
270  ->withCode(1518472189)
271  ),
274  'uriValue' => 99999,
275  ])),
277  ->withClassName(PageNotFoundException::class)
278  ->withMessage('The requested page does not exist')
279  ->withCode(1518472189)
280  ),
283  'uriValue' => 'NaN',
284  ])),
286  ->withClassName(PageNotFoundException::class)
287  ->withMessage('The requested page does not exist')
288  ->withCode(1518472189)
289  )
290  )
291  ->withApplicableSet(
292  ‪EnhancerDeclaration::create('requirements.value=\\d{3}')->withConfiguration([
293  'requirements' => [
294  'value' => '\\d{3}',
295  ],
296  ])
297  )
298  ->permute()
299  ->getTargetsForDataProvider();
300  }
301 
302  #[DataProvider('routeRequirementsAreConsideredDataProvider')]
303  #[Test]
304  public function ‪routeRequirementsAreConsidered(‪TestSet $testSet): void
305  {
306  $this->‪assertPageArgumentsEquals($testSet);
307  }
308 
309  public static function ‪routeIdentifiersAreResolvedDataProvider(): array
310  {
311  return [
312  // namespace[value]
313  'namespace[value] ? test' => [
314  'namespace',
315  'value',
316  'test',
317  ],
318  'namespace[value] ? x^30' => [
319  'namespace',
320  'value',
321  str_repeat('x', 30),
322  ],
323  'namespace[value] ? x^31' => [
324  'namespace',
325  'value',
326  str_repeat('x', 31),
327  ],
328  'namespace[value] ? x^32' => [
329  'namespace',
330  'value',
331  str_repeat('x', 32),
332  ],
333  'namespace[value] ? x^33' => [
334  'namespace',
335  'value',
336  str_repeat('x', 33),
337  ],
338  'namespace[value] ? 1^31 (type-cast)' => [
339  'namespace',
340  'value',
341  str_repeat('1', 31),
342  ],
343  // md5('namespace__@otne3') is 60360798585102000952995164024754 (numeric)
344  // md5('ximaz') is 61529519452809720693702583126814 (numeric)
345  'namespace[@otne3] ? numeric-md5 (type-cast)' => [
346  'namespace',
347  '@otne3',
348  md5('ximaz'),
349  ],
350  'namespace[value] ? namespace__value' => [
351  'namespace',
352  'value',
353  'namespace__value',
354  ],
355  'namespace[value] ? namespace/value' => [
356  'namespace',
357  'value',
358  'namespace/value',
359  'The requested URL is not distinct',
360  ],
361  'namespace[value] ? namespace__other' => [
362  'namespace',
363  'value',
364  'namespace__other',
365  ],
366  'namespace[value] ? namespace/other' => [
367  'namespace',
368  'value',
369  'namespace/other',
370  ],
371  // namespace[any/value]
372  'namespace[any/value] ? x^30' => [
373  'namespace',
374  'any/value',
375  str_repeat('x', 30),
376  ],
377  'namespace[any/value] ? x^31' => [
378  'namespace',
379  'any/value',
380  str_repeat('x', 31),
381  ],
382  'namespace[any/value] ? x^32' => [
383  'namespace',
384  'any/value',
385  str_repeat('x', 32),
386  ],
387  'namespace[any/value] ? namespace__any__value' => [
388  'namespace',
389  'any/value',
390  'namespace__any__value',
391  ],
392  'namespace[any/value] ? namespace/any/value' => [
393  'namespace',
394  'any/value',
395  'namespace/any/value',
396  'The requested URL is not distinct',
397  ],
398  'namespace[any/value] ? namespace__any__other' => [
399  'namespace',
400  'any/value',
401  'namespace__any__other',
402  ],
403  'namespace[any/value] ? namespace/any/other' => [
404  'namespace',
405  'any/value',
406  'namespace/any/other',
407  ],
408  // namespace[@any/value]
409  'namespace[@any/value] ? x^30' => [
410  'namespace',
411  '@any/value',
412  str_repeat('x', 30),
413  ],
414  'namespace[@any/value] ? x^31' => [
415  'namespace',
416  '@any/value',
417  str_repeat('x', 31),
418  ],
419  'namespace[@any/value] ? x^32' => [
420  'namespace',
421  '@any/value',
422  str_repeat('x', 32),
423  ],
424  'namespace[@any/value] ? md5(namespace__@any__value)' => [
425  'namespace',
426  '@any/value',
427  md5('namespace__@any__value'),
428  ],
429  'namespace[@any/value] ? namespace/@any/value' => [
430  'namespace',
431  '@any/value',
432  'namespace/@any/value',
433  'The requested URL is not distinct',
434  ],
435  'namespace[@any/value] ? md5(namespace__@any__other)' => [
436  'namespace',
437  '@any/value',
438  md5('namespace__@any__other'),
439  ],
440  'namespace[@any/value] ? namespace/@any/other' => [
441  'namespace',
442  '@any/value',
443  'namespace/@any/other',
444  ],
445  ];
446  }
447 
448  #[DataProvider('routeIdentifiersAreResolvedDataProvider')]
449  #[Test]
450  public function ‪routeIdentifiersAreResolved(string $namespace, string $argumentName, string $queryPath, string $failureReason = null): void
451  {
452  $query = [];
453  $routeValue = 'route-value';
454  $queryValue = 'parameter-value';
455  $query = ‪ArrayUtility::setValueByPath($query, $queryPath, $queryValue);
456  $queryParameters = http_build_query($query, '', '&', PHP_QUERY_RFC3986);
457  $targetUri = sprintf('https://acme.us/welcome/%s?%s', $routeValue, $queryParameters);
458 
459  $this->‪mergeSiteConfiguration('acme-com', [
460  'routeEnhancers' => ['Enhancer' => [
461  'type' => 'Plugin',
462  'routePath' => '/{name}',
463  '_arguments' => [
464  'name' => $argumentName,
465  ],
466  'namespace' => $namespace,
467  ]],
468  ]);
469 
470  $response = $this->executeFrontendSubRequest(
471  new InternalRequest($targetUri),
472  null,
473  true
474  );
475 
476  $body = (string)$response->getBody();
477  if ($failureReason === null) {
478  $pageArguments = json_decode($body, true);
479  self::assertNotNull($pageArguments, 'PageArguments could not be resolved');
480 
481  $expected = [];
482  $expected = ‪ArrayUtility::setValueByPath($expected, $namespace . '/' . $argumentName, $routeValue);
483  $expected = ‪ArrayUtility::setValueByPath($expected, $queryPath, $queryValue);
484  self::assertEquals($expected, $pageArguments['requestQueryParams']);
485  } else {
486  self::assertStringContainsString($failureReason, $body);
487  }
488  }
489 
490  public static function ‪nestedRouteArgumentsAreConsideredDataProvider(): array
491  {
492  $routePath = ‪VariableValue::create(
493  '/enhance/[[routeParameter]]',
494  ‪Variables::create(['routeParameter' => '{known_value}'])
495  );
496  $cHashVar = ‪Variable::create('cHash', ‪Variable::CAST_STRING);
497  $resolveValueVar = ‪Variable::create('resolveValue', ‪Variable::CAST_STRING);
498  // variables (applied when invoking expectations)
499  $variables = ‪Variables::create()->define([
500  'aspectName' => 'value',
501  ]);
502  $enhancers = [
503  'Simple' => ‪EnhancerDeclaration::create('Simple')
504  ->withConfiguration([
505  'type' => 'Simple',
506  'routePath' => $routePath,
507  '_arguments' => [
508  'known_value' => 'known/value',
509  ],
510  ])
511  ->withGenerateParameters([
512  ‪VariableValue::create('&known[value]=[[value]]&any[other]=other')
513  ->withRequiredDefinedVariableNames('value'),
514  ])
515  ->withResolveArguments([
516  'routeArguments' => [
517  'known' => ['value' => $resolveValueVar],
518  ],
519  'dynamicArguments' => [
520  'known' => ['value' => $resolveValueVar],
521  'any' => ['other' => 'other'],
522  'cHash' => $cHashVar,
523  ],
524  'queryArguments' => [
525  'any' => ['other' => 'other'],
526  'cHash' => $cHashVar,
527  ],
528  ]),
529  'Plugin' => ‪EnhancerDeclaration::create('Plugin')
530  ->withConfiguration([
531  'type' => 'Plugin',
532  'routePath' => $routePath,
533  'namespace' => 'testing',
534  '_arguments' => [
535  'known_value' => 'known/value',
536  ],
537  ])
538  ->withGenerateParameters([
539  ‪VariableValue::create('&testing[known][value]=[[value]]&testing[any][other]=other')
540  ->withRequiredDefinedVariableNames('value'),
541  ])
542  ->withResolveArguments([
543  'routeArguments' => [
544  'testing' => [
545  'known' => ['value' => $resolveValueVar],
546  ],
547  ],
548  'dynamicArguments' => [
549  'testing' => [
550  'known' => ['value' => $resolveValueVar],
551  'any' => ['other' => 'other'],
552  ],
553  'cHash' => $cHashVar,
554  ],
555  'queryArguments' => [
556  'testing' => [
557  'any' => ['other' => 'other'],
558  ],
559  'cHash' => $cHashVar,
560  ],
561  ]),
562  'Extbase' => ‪EnhancerDeclaration::create('Extbase')
563  ->withConfiguration([
564  'type' => 'Extbase',
565  'defaultController' => 'Link::index',
566  'extension' => 'testing',
567  'plugin' => 'link',
568  'routes' => [
569  [
570  'routePath' => $routePath,
571  '_controller' => 'Link::index',
572  '_arguments' => ['known_value' => 'known/value'],
573  ],
574  ],
575  ])
576  ->withGenerateParameters([
577  ‪VariableValue::create('&tx_testing_link[known][value]=[[value]]&tx_testing_link[any][other]=other')
578  ->withRequiredDefinedVariableNames('value'),
579  ])
580  ->withResolveArguments([
581  'routeArguments' => [
582  'tx_testing_link' => [
583  'known' => ['value' => $resolveValueVar],
584  'controller' => 'Link',
585  'action' => 'index',
586  ],
587  ],
588  'dynamicArguments' => [
589  'tx_testing_link' => [
590  'known' => ['value' => $resolveValueVar],
591  'any' => ['other' => 'other'],
592  ],
593  'cHash' => $cHashVar,
594  ],
595  'staticArguments' => [
596  'tx_testing_link' => [
597  'controller' => 'Link',
598  'action' => 'index',
599  ],
600  ],
601  'queryArguments' => [
602  'tx_testing_link' => [
603  'any' => ['other' => 'other'],
604  ],
605  'cHash' => $cHashVar,
606  ],
607  ]),
608  ];
609 
610  return ‪Permutation::create($variables)
611  ->withTargets(
613  ->withMergedApplicables(‪LanguageContext::create(0))
614  ->withTargetPageId(1100)
615  ->withUrl(
617  'https://acme.us/welcome/enhance/[[resolveValue]][[pathSuffix]]',
618  ‪Variables::create(['pathSuffix' => ''])
619  )
620  )
621  )
622  ->withApplicableSet(
624  'value' => 'known',
625  'resolveValue' => 'known',
626  ]))
627  )
628  ->withApplicableItems($enhancers)
629  ->withApplicableSet(
631  'pathSuffix' => '?any%5Bother%5D=other&cHash=[[cHash]]',
632  'cHash' => 'a655d1f1d346f7d3fa7aef5459a6547f',
633  ]))->withRequiredApplicables($enhancers['Simple']),
635  'pathSuffix' => '?testing%5Bany%5D%5Bother%5D=other&cHash=[[cHash]]',
636  'cHash' => 'bfd5274d1f8a5051f44ca703a0dbd359',
637  ]))->withRequiredApplicables($enhancers['Plugin']),
639  'pathSuffix' => '?tx_testing_link%5Bany%5D%5Bother%5D=other&cHash=[[cHash]]',
640  'cHash' => '0d1b27ac1cc957c16c9c02cf24f90af4',
641  ]))->withRequiredApplicables($enhancers['Extbase'])
642  )
643  ->permute()
644  ->getTargetsForDataProvider();
645  }
646 
647  #[DataProvider('nestedRouteArgumentsAreConsideredDataProvider')]
648  #[Test]
649  public function ‪nestedRouteArgumentsAreConsidered(‪TestSet $testSet): void
650  {
651  $this->‪assertPageArgumentsEquals($testSet);
652  }
653 }
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest
Definition: AbstractEnhancerSiteRequestTestCase.php:18
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\ExceptionExpectation\create
‪static create(string $identifier)
Definition: ExceptionExpectation.php:27
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variable
Definition: Variable.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\AbstractEnhancerSiteRequestTestCase\assertPageArgumentsEquals
‪assertPageArgumentsEquals(TestSet $testSet)
Definition: AbstractEnhancerSiteRequestTestCase.php:114
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeRequirementsAreConsideredDataProvider
‪static routeRequirementsAreConsideredDataProvider()
Definition: RouteTest.php:207
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest
Definition: RouteTest.php:40
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Permutation
Definition: Permutation.php:23
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableItem\create
‪static create(string $key, $value)
Definition: VariableItem.php:31
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeRequirementsAreConsidered
‪routeRequirementsAreConsidered(TestSet $testSet)
Definition: RouteTest.php:304
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeRequirementsHavingAspectsAreConsideredDataProvider
‪static routeRequirementsHavingAspectsAreConsideredDataProvider()
Definition: RouteTest.php:131
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\AspectDeclaration\create
‪static create(string $identifier)
Definition: AspectDeclaration.php:25
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\ApplicableConjunction\create
‪static create(Applicable ... $applicables)
Definition: ApplicableConjunction.php:27
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variables
Definition: Variables.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeDefaultsAreConsideredDataProvider
‪static routeDefaultsAreConsideredDataProvider()
Definition: RouteTest.php:41
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext\create
‪static create(Variables $variables)
Definition: VariablesContext.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariablesContext
Definition: VariablesContext.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Permutation\create
‪static create(Variables $variables)
Definition: Permutation.php:41
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet
Definition: TestSet.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Builder
Definition: Builder.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Builder\create
‪static create()
Definition: Builder.php:22
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableValue\create
‪static create(string $value, Variables $defaultVariables=null)
Definition: VariableValue.php:37
‪TYPO3\CMS\Core\Error\Http\PageNotFoundException
Definition: PageNotFoundException.php:24
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variables\create
‪static create(array $items=[])
Definition: Variables.php:22
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\EnhancerDeclaration\create
‪static create(string $identifier)
Definition: EnhancerDeclaration.php:27
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\AspectDeclaration
Definition: AspectDeclaration.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\ExceptionExpectation
Definition: ExceptionExpectation.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeRequirementsHavingAspectsAreConsidered
‪routeRequirementsHavingAspectsAreConsidered(TestSet $testSet)
Definition: RouteTest.php:202
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\nestedRouteArgumentsAreConsidered
‪nestedRouteArgumentsAreConsidered(TestSet $testSet)
Definition: RouteTest.php:649
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\AbstractEnhancerSiteRequestTestCase
Definition: AbstractEnhancerSiteRequestTestCase.php:31
‪TYPO3\CMS\Core\Utility\ArrayUtility
Definition: ArrayUtility.php:26
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableItem
Definition: VariableItem.php:21
‪TYPO3\CMS\Core\Utility\ArrayUtility\setValueByPath
‪static array setValueByPath(array $array, string|array|\ArrayAccess $path, mixed $value, string $delimiter='/')
Definition: ArrayUtility.php:261
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeIdentifiersAreResolvedDataProvider
‪static routeIdentifiersAreResolvedDataProvider()
Definition: RouteTest.php:309
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\nestedRouteArgumentsAreConsideredDataProvider
‪static nestedRouteArgumentsAreConsideredDataProvider()
Definition: RouteTest.php:490
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\LanguageContext
Definition: LanguageContext.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeDefaultsAreConsidered
‪routeDefaultsAreConsidered(TestSet $testSet)
Definition: RouteTest.php:126
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\ApplicableConjunction
Definition: ApplicableConjunction.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\VariableValue
Definition: VariableValue.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\EnhancerDeclaration
Definition: EnhancerDeclaration.php:21
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\mergeSiteConfiguration
‪mergeSiteConfiguration(string $identifier, array $overrides)
Definition: SiteBasedTestTrait.php:73
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\TestSet\create
‪static create($parentSet=null)
Definition: TestSet.php:33
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\LanguageContext\create
‪static create(int $languageId)
Definition: LanguageContext.php:24
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\EnhancerSiteRequest\RouteTest\routeIdentifiersAreResolved
‪routeIdentifiersAreResolved(string $namespace, string $argumentName, string $queryPath, string $failureReason=null)
Definition: RouteTest.php:450
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variable\create
‪static create(string $variableName, int $cast=self::CAST_NONE)
Definition: Variable.php:30
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\Framework\Builder\Variable\CAST_STRING
‪const CAST_STRING
Definition: Variable.php:23