Skip to content

Commit

Permalink
[TASK] Ensure correct SiteConfiguration in SlugServiceTest.php
Browse files Browse the repository at this point in the history
It is possible, that the `SiteConfiguration` is retrieved from
the `Dependency Injection container` by code executed before
the test releated site configuration is written, which does not
reset the instance based `SiteConfiguration->$firstLevelCache`
property and later retrieving site configurations using the
`SiteFinder`, for example in rootline and other operations,
cannot find the test instance configurations.

With #103470 this has been mitigated within the `SiteBasedTestTrait`,
but `\TYPO3\CMS\Redirects\Tests\Functional\Service\SlugServiceTest`
uses direct method for additional site configurations suffering from
the very same issue.

This change modifies the `SlugServiceTest` to retrieve the
`SiteConfiguration` from the `Dependency Injection container`
to ensure proper internal cache invalidation for SiteConfig
write operations and additionally ensure cache invalidation
by calling `SiteFinder->getAllSites(false)`.

Resolves: #103471
Related: #103470
Releases: main, 12.4
Change-Id: I27075ad9f5640aaea07df81a97c8b0326fd76003
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83574
Tested-by: Benni Mack <benni@typo3.org>
Reviewed-by: Garvin Hicking <gh@faktor-e.de>
Reviewed-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: Stefan Bürk <stefan@buerk.tech>
Tested-by: core-ci <typo3@b13.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Garvin Hicking <gh@faktor-e.de>
  • Loading branch information
sbuerk committed Mar 23, 2024
1 parent 74a7d93 commit 39a3867
Showing 1 changed file with 7 additions and 5 deletions.
Expand Up @@ -29,6 +29,7 @@
use TYPO3\CMS\Core\LinkHandling\LinkService;
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
use TYPO3\CMS\Core\Routing\SiteMatcher;
use TYPO3\CMS\Core\Site\SiteFinder;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Utility\StringUtility;
use TYPO3\CMS\Redirects\Event\AfterAutoCreateRedirectHasBeenPersistedEvent;
Expand Down Expand Up @@ -562,7 +563,7 @@ protected function buildBaseSite(): void
'rootPageId' => 1,
'base' => '/',
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}

Expand All @@ -572,7 +573,7 @@ protected function buildBaseSiteInSubfolder(): void
'rootPageId' => 1,
'base' => '/sub-folder',
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}

Expand All @@ -583,7 +584,7 @@ protected function buildBaseSiteWithLanguages(): void
'base' => '/',
'languages' => $this->languages,
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}

Expand All @@ -602,13 +603,14 @@ protected function buildBaseSiteWithLanguagesInSubFolder(): void
'base' => '/sub-folder',
'languages' => $languages,
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}

protected function createSubject(): void
{
GeneralUtility::makeInstance(SiteMatcher::class)->refresh();
$this->get(SiteMatcher::class)->refresh();
$this->get(SiteFinder::class)->getAllSites(false);
$this->subject = new SlugService(
context: GeneralUtility::makeInstance(Context::class),
pageRepository: GeneralUtility::makeInstance(PageRepository::class),
Expand Down

0 comments on commit 39a3867

Please sign in to comment.