‪TYPO3CMS  9.5
SiteRequestTest.php
Go to the documentation of this file.
1 <?php
2 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 
21 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerFactory;
22 use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\Scenario\DataHandlerWriter;
23 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
24 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequestContext;
25 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\ResponseContent;
26 
31 {
35  private ‪$siteTitle = 'A Company that Manufactures Everything Inc';
36 
41 
42  public static function ‪setUpBeforeClass()
43  {
44  parent::setUpBeforeClass();
45  static::initializeDatabaseSnapshot();
46  }
47 
48  public static function ‪tearDownAfterClass()
49  {
50  static::destroyDatabaseSnapshot();
51  parent::tearDownAfterClass();
52  }
53 
54  protected function ‪setUp()
55  {
56  parent::setUp();
57 
58  // these settings are forwarded to the frontend sub-request as well
59  $this->internalRequestContext = (new InternalRequestContext())
60  ->withGlobalSettings(['TYPO3_CONF_VARS' => static::TYPO3_CONF_VARS]);
61 
62  $this->withDatabaseSnapshot(function () {
63  $this->‪setUpDatabase();
64  });
65  }
66 
67  protected function ‪setUpDatabase()
68  {
69  $backendUser = $this->setUpBackendUserFromFixture(1);
71 
72  $scenarioFile = __DIR__ . '/Fixtures/PlainScenario.yaml';
73  $factory = DataHandlerFactory::fromYamlFile($scenarioFile);
74  $writer = DataHandlerWriter::withBackendUser($backendUser);
75  $writer->invokeFactory($factory);
76  static::failIfArrayIsNotEmpty(
77  $writer->getErrors()
78  );
79 
80  $this->setUpFrontendRootPage(
81  1000,
82  [
83  'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.typoscript',
84  'typo3/sysext/frontend/Tests/Functional/SiteHandling/Fixtures/JsonRenderer.typoscript',
85  ],
86  [
87  'title' => 'ACME Root',
88  'sitetitle' => $this->siteTitle,
89  ]
90  );
91  }
92 
93  protected function ‪tearDown()
94  {
95  unset($this->internalRequestContext);
96  parent::tearDown();
97  }
98 
102  public function ‪shortcutsAreRedirectedDataProvider(): array
103  {
104  $domainPaths = [
105  // @todo Implicit strict mode handling when calling non-existent site
106  // '/',
107  // 'https://localhost/',
108  'https://website.local/',
109  ];
110 
111  $queries = [
112  '',
113  ];
114 
115  return $this->wrapInArray(
116  $this->keysFromValues(
117  ‪PermutationUtility::meltStringItems([$domainPaths, $queries])
118  )
119  );
120  }
121 
128  public function ‪shortcutsAreRedirectedToFirstSubPage(string $uri)
129  {
131  'website-local',
132  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
133  [
134  $this->‪buildDefaultLanguageConfiguration('EN', '/en-en/'),
135  ]
136  );
137 
138  $expectedStatusCode = 307;
139  $expectedHeaders = ['location' => ['https://website.local/en-en/']];
140 
141  $response = $this->executeFrontendRequest(
142  new InternalRequest($uri),
143  $this->internalRequestContext
144  );
145  static::assertSame($expectedStatusCode, $response->getStatusCode());
146  static::assertSame($expectedHeaders, $response->getHeaders());
147  }
148 
155  public function ‪shortcutsAreRedirectedAndRenderFirstSubPage(string $uri)
156  {
158  'website-local',
159  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
160  [
161  $this->‪buildDefaultLanguageConfiguration('EN', '/en-en/'),
162  ]
163  );
164 
165  $expectedStatusCode = 200;
166  $expectedPageTitle = 'EN: Welcome';
167 
168  $response = $this->executeFrontendRequest(
169  new InternalRequest($uri),
170  $this->internalRequestContext,
171  true
172  );
173  $responseStructure = ResponseContent::fromString(
174  (string)$response->getBody()
175  );
176 
177  static::assertSame(
178  $expectedStatusCode,
179  $response->getStatusCode()
180  );
181  static::assertSame(
182  $this->siteTitle,
183  $responseStructure->getScopePath('template/sitetitle')
184  );
185  static::assertSame(
186  $expectedPageTitle,
187  $responseStructure->getScopePath('page/title')
188  );
189  }
190 
194  public function ‪pageIsRenderedWithPathsDataProvider(): array
195  {
196  $domainPaths = [
197  // @todo currently base needs to be defined with domain
198  // '/',
199  'https://website.local/',
200  ];
201 
202  $languagePaths = [
203  'en-en/',
204  'fr-fr/',
205  'fr-ca/',
206  ];
207 
208  $queries = [
209  '?id=1100',
210  '?id=acme-first',
211  ];
212 
213  return array_map(
214  function (string $uri) {
215  if (strpos($uri, '/fr-fr/') !== false) {
216  $expectedPageTitle = 'FR: Welcome';
217  } elseif (strpos($uri, '/fr-ca/') !== false) {
218  $expectedPageTitle = 'FR-CA: Welcome';
219  } else {
220  $expectedPageTitle = 'EN: Welcome';
221  }
222  return [$uri, $expectedPageTitle];
223  },
224  $this->keysFromValues(
225  ‪PermutationUtility::meltStringItems([$domainPaths, $languagePaths, $queries])
226  )
227  );
228  }
229 
237  public function ‪pageIsRenderedWithPaths(string $uri, string $expectedPageTitle)
238  {
240  'website-local',
241  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
242  [
243  $this->‪buildDefaultLanguageConfiguration('EN', '/en-en/'),
244  $this->‪buildLanguageConfiguration('FR', '/fr-fr/', ['EN']),
245  $this->‪buildLanguageConfiguration('FR-CA', '/fr-ca/', ['FR', 'EN']),
246  ]
247  );
248 
249  $response = $this->executeFrontendRequest(
250  new InternalRequest($uri),
251  $this->internalRequestContext
252  );
253  $responseStructure = ResponseContent::fromString(
254  (string)$response->getBody()
255  );
256 
257  static::assertSame(
258  200,
259  $response->getStatusCode()
260  );
261  static::assertSame(
262  $this->siteTitle,
263  $responseStructure->getScopePath('template/sitetitle')
264  );
265  static::assertSame(
266  $expectedPageTitle,
267  $responseStructure->getScopePath('page/title')
268  );
269  }
270 
274  public function ‪pageIsRenderedWithDomainsDataProvider(): array
275  {
276  $domainPaths = [
277  // @todo: This turns into a redirect to the default language (".us") making this function obsolete
278  // 'https://website.local/',
279  'https://website.us/',
280  'https://website.fr/',
281  // Explicitly testing umlaut domains
282  'https://wäbsite.ca/',
283  // @todo Implicit strict mode handling when calling non-existent site
284  // 'https://website.other/',
285  ];
286 
287  $queries = [
288  '?id=1100',
289  '?id=acme-first',
290  ];
291 
292  return array_map(
293  function (string $uri) {
294  if (strpos($uri, '.fr/') !== false) {
295  $expectedPageTitle = 'FR: Welcome';
296  } elseif (strpos($uri, '.ca/') !== false) {
297  $expectedPageTitle = 'FR-CA: Welcome';
298  } else {
299  $expectedPageTitle = 'EN: Welcome';
300  }
301  return [$uri, $expectedPageTitle];
302  },
303  $this->keysFromValues(
304  ‪PermutationUtility::meltStringItems([$domainPaths, $queries])
305  )
306  );
307  }
308 
316  public function ‪pageIsRenderedWithDomains(string $uri, string $expectedPageTitle)
317  {
319  'website-local',
320  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
321  [
322  $this->‪buildDefaultLanguageConfiguration('EN', 'https://website.us/'),
323  $this->‪buildLanguageConfiguration('FR', 'https://website.fr/', ['EN']),
324  $this->‪buildLanguageConfiguration('FR-CA', 'https://wäbsite.ca/', ['FR', 'EN']),
325  ]
326  );
327 
328  $response = $this->executeFrontendRequest(
329  new InternalRequest($uri),
330  $this->internalRequestContext
331  );
332  $responseStructure = ResponseContent::fromString(
333  (string)$response->getBody()
334  );
335 
336  static::assertSame(
337  200,
338  $response->getStatusCode()
339  );
340  static::assertSame(
341  $this->siteTitle,
342  $responseStructure->getScopePath('template/sitetitle')
343  );
344  static::assertSame(
345  $expectedPageTitle,
346  $responseStructure->getScopePath('page/title')
347  );
348  }
349 
353  public function ‪restrictedPageIsRenderedDataProvider(): array
354  {
355  $instructions = [
356  // frontend user 1
357  ['https://website.local/?id=1510', 1, 'Whitepapers'],
358  ['https://website.local/?id=1511', 1, 'Products'],
359  ['https://website.local/?id=1512', 1, 'Solutions'],
360  // frontend user 2
361  ['https://website.local/?id=1510', 2, 'Whitepapers'],
362  ['https://website.local/?id=1511', 2, 'Products'],
363  ['https://website.local/?id=1515', 2, 'Research'],
364  ['https://website.local/?id=1520', 2, 'Forecasts'],
365  ['https://website.local/?id=1521', 2, 'Current Year'],
366  // frontend user 3
367  ['https://website.local/?id=1510', 3, 'Whitepapers'],
368  ['https://website.local/?id=1511', 3, 'Products'],
369  ['https://website.local/?id=1512', 3, 'Solutions'],
370  ['https://website.local/?id=1515', 3, 'Research'],
371  ['https://website.local/?id=1520', 3, 'Forecasts'],
372  ['https://website.local/?id=1521', 3, 'Current Year'],
373  ];
374 
375  return $this->keysFromTemplate($instructions, '%1$s (user:%2$s)');
376  }
377 
386  public function ‪restrictedPageIsRendered(string $uri, int $frontendUserId, string $expectedPageTitle)
387  {
389  'website-local',
390  $this->‪buildSiteConfiguration(1000, 'https://website.local/')
391  );
392 
393  $response = $this->executeFrontendRequest(
394  new InternalRequest($uri),
395  $this->internalRequestContext
396  ->withFrontendUserId($frontendUserId)
397  );
398  $responseStructure = ResponseContent::fromString(
399  (string)$response->getBody()
400  );
401 
402  static::assertSame(
403  200,
404  $response->getStatusCode()
405  );
406  static::assertSame(
407  $this->siteTitle,
408  $responseStructure->getScopePath('template/sitetitle')
409  );
410  static::assertSame(
411  $expectedPageTitle,
412  $responseStructure->getScopePath('page/title')
413  );
414  }
415 
420  {
421  $instructions = [
422  // no frontend user given
423  ['https://website.local/?id=1510', 0],
424  ['https://website.local/?id=1511', 0],
425  ['https://website.local/?id=1512', 0],
426  ['https://website.local/?id=1515', 0],
427  ['https://website.local/?id=1520', 0],
428  ['https://website.local/?id=1521', 0],
429  // frontend user 1
430  ['https://website.local/?id=1515', 1],
431  ['https://website.local/?id=1520', 1],
432  ['https://website.local/?id=1521', 1],
433  // frontend user 2
434  ['https://website.local/?id=1512', 2],
435  ];
436 
437  return $this->keysFromTemplate($instructions, '%1$s (user:%2$s)');
438  }
439 
448  {
450  'website-local',
451  $this->‪buildSiteConfiguration(1000, 'https://website.local/')
452  );
453 
454  $response = $this->executeFrontendRequest(
455  new InternalRequest($uri),
456  $this->internalRequestContext
457  ->withFrontendUserId($frontendUserId)
458  );
459 
460  static::assertSame(
461  403,
462  $response->getStatusCode()
463  );
464  static::assertThat(
465  (string)$response->getBody(),
466  static::logicalOr(
467  static::stringContains('Reason: ID was not an accessible page'),
468  static::stringContains('Reason: Subsection was found and not accessible')
469  )
470  );
471  }
472 
481  {
483  'website-local',
484  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
485  [],
486  $this->‪buildErrorHandlingConfiguration('Fluid', [403])
487  );
488 
489  $response = $this->executeFrontendRequest(
490  new InternalRequest($uri),
491  $this->internalRequestContext
492  ->withFrontendUserId($frontendUserId)
493  );
494 
495  static::assertSame(
496  403,
497  $response->getStatusCode()
498  );
499  static::assertContains(
500  'reasons: code,fe_group',
501  (string)$response->getBody()
502  );
503  static::assertThat(
504  (string)$response->getBody(),
505  static::logicalOr(
506  static::stringContains('message: ID was not an accessible page'),
507  static::stringContains('message: Subsection was found and not accessible')
508  )
509  );
510  }
511 
521  {
522  $this->markTestSkipped('Skipped until PageContentErrorHandler::handlePageError does not use HTTP anymore');
523 
525  'website-local',
526  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
527  [],
528  $this->‪buildErrorHandlingConfiguration('Page', [403])
529  );
530 
531  $response = $this->executeFrontendRequest(
532  new InternalRequest($uri),
533  $this->internalRequestContext
534  ->withFrontendUserId($frontendUserId)
535  );
536 
537  static::assertSame(
538  403,
539  $response->getStatusCode()
540  );
541  }
542 
551  {
553  'website-local',
554  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
555  [],
556  $this->‪buildErrorHandlingConfiguration('PHP', [403])
557  );
558 
559  $response = $this->executeFrontendRequest(
560  new InternalRequest($uri),
561  $this->internalRequestContext
562  ->withFrontendUserId($frontendUserId)
563  );
564  $json = json_decode((string)$response->getBody(), true);
565 
566  static::assertSame(
567  403,
568  $response->getStatusCode()
569  );
570  static::assertThat(
571  $json['message'] ?? null,
572  static::logicalOr(
573  static::identicalTo('ID was not an accessible page'),
574  static::identicalTo('Subsection was found and not accessible')
575  )
576  );
577  }
578 
583  {
584  $domainPaths = [
585  'https://website.local/',
586  ];
587 
588  $queries = [
589  '?',
590  '?id=1000',
591  '?id=acme-root',
592  '?id=1100',
593  '?id=acme-first',
594  ];
595 
596  $customQueries = [
597  '&testing[value]=1',
598  '&testing[value]=1&cHash=',
599  '&testing[value]=1&cHash=WRONG',
600  ];
601 
602  return $this->wrapInArray(
603  $this->keysFromValues(
604  ‪PermutationUtility::meltStringItems([$domainPaths, $queries, $customQueries])
605  )
606  );
607  }
608 
616  {
618  'website-local',
619  $this->‪buildSiteConfiguration(1000, 'https://website.local/')
620  );
621 
622  $this->expectExceptionCode(1518472189);
623  $this->expectException(PageNotFoundException::class);
624 
625  $this->executeFrontendRequest(
626  new InternalRequest($uri),
627  $this->internalRequestContext
628  );
629  }
630 
638  {
639  $response = $this->executeFrontendRequest(
640  new InternalRequest($uri),
641  $this->internalRequestContext->withMergedGlobalSettings([
642  'TYPO3_CONF_VARS' => [
643  'FE' => [
644  'pageNotFound_handling' => 'READFILE:typo3/sysext/core/Tests/Functional/Fixtures/Frontend/PageError.txt',
645  ]
646  ]
647  ])
648  );
649 
650  static::assertSame(
651  404,
652  $response->getStatusCode()
653  );
654  static::assertThat(
655  (string)$response->getBody(),
656  static::logicalOr(
657  static::stringContains('reason: Request parameters could not be validated (&amp;cHash empty)'),
658  static::stringContains('reason: Request parameters could not be validated (&amp;cHash comparison failed)')
659  )
660  );
661  }
662 
670  {
672  'website-local',
673  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
674  [],
675  $this->‪buildErrorHandlingConfiguration('Fluid', [404])
676  );
677 
678  $response = $this->executeFrontendRequest(
679  new InternalRequest($uri),
680  $this->internalRequestContext
681  );
682 
683  static::assertSame(
684  404,
685  $response->getStatusCode()
686  );
687  static::assertThat(
688  (string)$response->getBody(),
689  static::logicalOr(
690  static::stringContains('message: Request parameters could not be validated (&amp;cHash empty)'),
691  static::stringContains('message: Request parameters could not be validated (&amp;cHash comparison failed)')
692  )
693  );
694  }
695 
704  {
705  $this->markTestSkipped('Skipped until PageContentErrorHandler::handlePageError does not use HTTP anymore');
706 
708  'website-local',
709  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
710  [],
711  $this->‪buildErrorHandlingConfiguration('Page', [404])
712  );
713 
714  $response = $this->executeFrontendRequest(
715  new InternalRequest($uri),
716  $this->internalRequestContext
717  );
718 
719  static::assertSame(
720  404,
721  $response->getStatusCode()
722  );
723  }
724 
732  {
734  'website-local',
735  $this->‪buildSiteConfiguration(1000, 'https://website.local/'),
736  [],
737  $this->‪buildErrorHandlingConfiguration('PHP', [404])
738  );
739 
740  $response = $this->executeFrontendRequest(
741  new InternalRequest($uri),
742  $this->internalRequestContext
743  );
744  $json = json_decode((string)$response->getBody(), true);
745 
746  static::assertSame(
747  404,
748  $response->getStatusCode()
749  );
750  static::assertThat(
751  $json['message'] ?? null,
752  static::logicalOr(
753  static::identicalTo('Request parameters could not be validated (&cHash empty)'),
754  static::identicalTo('Request parameters could not be validated (&cHash comparison failed)')
755  )
756  );
757  }
758 
762  public function ‪pageIsRenderedWithValidCacheHashDataProvider(): array
763  {
764  $domainPaths = [
765  // @todo Implicit strict mode handling when calling non-existent site
766  // '/',
767  // 'https://localhost/',
768  'https://website.local/',
769  ];
770 
771  // cHash has been calculated with encryption key set to
772  // '4408d27a916d51e624b69af3554f516dbab61037a9f7b9fd6f81b4d3bedeccb6'
773  $queries = [
774  // @todo Currently fails since cHash is verified after(!) redirect to page 1100
775  // '?&cHash=7d1f13fa91159dac7feb3c824936b39d&id=1000',
776  // '?&cHash=7d1f13fa91159dac7feb3c824936b39d=acme-root',
777  '?&cHash=f42b850e435f0cedd366f5db749fc1af&id=1100',
778  '?&cHash=f42b850e435f0cedd366f5db749fc1af&id=acme-first',
779  ];
780 
781  $customQueries = [
782  '&testing[value]=1',
783  ];
784 
785  $dataSet = $this->wrapInArray(
786  $this->keysFromValues(
787  ‪PermutationUtility::meltStringItems([$domainPaths, $queries, $customQueries])
788  )
789  );
790 
791  return $dataSet;
792  }
793 
800  public function ‪pageIsRenderedWithValidCacheHash($uri)
801  {
803  'website-local',
804  $this->‪buildSiteConfiguration(1000, 'https://website.local/')
805  );
806 
807  $response = $this->executeFrontendRequest(
808  new InternalRequest($uri),
809  $this->internalRequestContext
810  );
811  $responseStructure = ResponseContent::fromString(
812  (string)$response->getBody()
813  );
814  static::assertSame(
815  '1',
816  $responseStructure->getScopePath('getpost/testing.value')
817  );
818  }
819 }
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingFluidErrorHandling
‪pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingFluidErrorHandling(string $uri)
Definition: SiteRequestTest.php:667
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithValidCacheHash
‪pageIsRenderedWithValidCacheHash($uri)
Definition: SiteRequestTest.php:798
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\$internalRequestContext
‪InternalRequestContext $internalRequestContext
Definition: SiteRequestTest.php:38
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildErrorHandlingConfiguration
‪array buildErrorHandlingConfiguration(string $handler, array $codes)
Definition: SiteBasedTestTrait.php:182
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRenderingStopsWithInvalidCacheHashDataProvider
‪array pageRenderingStopsWithInvalidCacheHashDataProvider()
Definition: SiteRequestTest.php:580
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\setUpBeforeClass
‪static setUpBeforeClass()
Definition: SiteRequestTest.php:40
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\shortcutsAreRedirectedAndRenderFirstSubPage
‪shortcutsAreRedirectedAndRenderFirstSubPage(string $uri)
Definition: SiteRequestTest.php:153
‪TYPO3\CMS\Core\Utility\PermutationUtility\meltStringItems
‪static array meltStringItems(array $payload, string $previousResult='')
Definition: PermutationUtility.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorDataProvider
‪array restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorDataProvider()
Definition: SiteRequestTest.php:417
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest
Definition: SiteRequestTest.php:31
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRequestThrowsExceptionWithInvalidCacheHashWithoutHavingErrorHandling
‪pageRequestThrowsExceptionWithInvalidCacheHashWithoutHavingErrorHandling(string $uri)
Definition: SiteRequestTest.php:613
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithValidCacheHashDataProvider
‪array pageIsRenderedWithValidCacheHashDataProvider()
Definition: SiteRequestTest.php:760
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildLanguageConfiguration
‪array buildLanguageConfiguration(string $identifier, string $base, array $fallbackIdentifiers=[], string $fallbackType=null)
Definition: SiteBasedTestTrait.php:140
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithDomains
‪pageIsRenderedWithDomains(string $uri, string $expectedPageTitle)
Definition: SiteRequestTest.php:314
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:56
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\AbstractTestCase
Definition: AbstractTestCase.php:29
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRequestSendsNotFoundResponseWithInvalidCacheHash
‪pageRequestSendsNotFoundResponseWithInvalidCacheHash(string $uri)
Definition: SiteRequestTest.php:635
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\setUp
‪setUp()
Definition: SiteRequestTest.php:52
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageIsRendered
‪restrictedPageIsRendered(string $uri, int $frontendUserId, string $expectedPageTitle)
Definition: SiteRequestTest.php:384
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingPhpErrorHandling
‪pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingPhpErrorHandling(string $uri)
Definition: SiteRequestTest.php:729
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪array buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:122
‪TYPO3\CMS\Core\Error\Http\PageNotFoundException
Definition: PageNotFoundException.php:21
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithPaths
‪pageIsRenderedWithPaths(string $uri, string $expectedPageTitle)
Definition: SiteRequestTest.php:235
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\tearDown
‪tearDown()
Definition: SiteRequestTest.php:91
‪TYPO3\CMS\Core\Utility\PermutationUtility
Definition: PermutationUtility.php:22
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\$siteTitle
‪string $siteTitle
Definition: SiteRequestTest.php:34
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithPathsDataProvider
‪array pageIsRenderedWithPathsDataProvider()
Definition: SiteRequestTest.php:192
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingFluidErrorHandling
‪restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingFluidErrorHandling(string $uri, int $frontendUserId)
Definition: SiteRequestTest.php:478
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling
Definition: AbstractTestCase.php:3
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\setUpDatabase
‪setUpDatabase()
Definition: SiteRequestTest.php:65
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithoutHavingErrorHandling
‪restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithoutHavingErrorHandling(string $uri, int $frontendUserId)
Definition: SiteRequestTest.php:445
‪TYPO3\CMS\Core\Core\Bootstrap
Definition: Bootstrap.php:50
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageIsRenderedDataProvider
‪array restrictedPageIsRenderedDataProvider()
Definition: SiteRequestTest.php:351
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingPageErrorHandling
‪restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingPageErrorHandling(string $uri, int $frontendUserId)
Definition: SiteRequestTest.php:518
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingPageErrorHandling
‪pageRequestSendsNotFoundResponseWithInvalidCacheHashWithHavingPageErrorHandling(string $uri)
Definition: SiteRequestTest.php:701
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪array buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:107
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\shortcutsAreRedirectedToFirstSubPage
‪shortcutsAreRedirectedToFirstSubPage(string $uri)
Definition: SiteRequestTest.php:126
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\shortcutsAreRedirectedDataProvider
‪array shortcutsAreRedirectedDataProvider()
Definition: SiteRequestTest.php:100
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingPhpErrorHandling
‪restrictedPageSendsForbiddenResponseWithUnauthorizedVisitorWithHavingPhpErrorHandling(string $uri, int $frontendUserId)
Definition: SiteRequestTest.php:548
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\tearDownAfterClass
‪static tearDownAfterClass()
Definition: SiteRequestTest.php:46
‪TYPO3\CMS\Frontend\Tests\Functional\SiteHandling\SiteRequestTest\pageIsRenderedWithDomainsDataProvider
‪array pageIsRenderedWithDomainsDataProvider()
Definition: SiteRequestTest.php:272
‪TYPO3\CMS\Core\Core\Bootstrap\initializeLanguageObject
‪static Bootstrap null initializeLanguageObject()
Definition: Bootstrap.php:986