2 declare(strict_types = 1);
21 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\Internal\TypoScriptInstruction;
22 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
23 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequestContext;
24 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
33 private const ENCRYPTION_KEY =
'4408d27a916d51e624b69af3554f516dbab61037a9f7b9fd6f81b4d3bedeccb6';
40 'requireCacheHashPresenceParameters' => []
45 'EN' => [
'id' => 0,
'title' =>
'English',
'locale' =>
'en_US.UTF8',
'iso' =>
'en',
'hrefLang' =>
'en-US',
'direction' =>
''],
52 'core',
'frontend',
'seo'
61 'typo3/sysext/core/Tests/Functional/Fixtures/Frontend/AdditionalConfiguration.php' =>
'typo3conf/AdditionalConfiguration.php',
69 protected function setUp(): void
74 $this->internalRequestContext = (
new InternalRequestContext())
75 ->withGlobalSettings([
'TYPO3_CONF_VARS' => static::TYPO3_CONF_VARS]);
85 $this->importDataSet(
'EXT:seo/Tests/Functional/Fixtures/pages-canonical.xml');
86 $this->setUpFrontendRootPage(1);
91 unset($this->internalRequestContext);
98 'uid: 1 with canonical_link' => [
100 '<link rel="canonical" href="http://localhost/"/>' . chr(10),
102 'uid: 2 with canonical_link' => [
103 'http://localhost/dummy-1-2',
104 '<link rel="canonical" href="http://localhost/dummy-1-2"/>' . chr(10),
106 'uid: 3 with canonical_link AND content_from_pid = 2' => [
107 'http://localhost/dummy-1-3',
108 '<link rel="canonical" href="http://localhost/dummy-1-2"/>' . chr(10),
110 'uid: 4 without canonical_link AND content_from_pid = 2' => [
111 'http://localhost/dummy-1-4',
112 '<link rel="canonical" href="http://localhost/dummy-1-2"/>' . chr(10),
114 'uid: 5 without canonical_link AND without content_from_pid set' => [
115 'http://localhost/dummy-1-2-5',
116 '<link rel="canonical" href="http://localhost/dummy-1-2-5"/>' . chr(10),
118 'uid: 8 without canonical_link AND content_from_pid = 9 (but target page is hidden)' => [
119 'http://localhost/dummy-1-2-8',
120 '<link rel="canonical" href="http://localhost/dummy-1-2-8"/>' . chr(10),
122 'uid: 10 no index' => [
123 'http://localhost/dummy-1-2-10',
136 public function generate(
string $targetUri,
string $expectedCanonicalUrl): void
138 $response = $this->executeFrontendRequest(
139 (
new InternalRequest($targetUri))
141 $this->internalRequestContext,
145 self::assertStringContainsString($expectedCanonicalUrl, (
string)$response->getBody());
150 return (
new TypoScriptInstruction(TemplateService::class))