Skip to content
Snippets Groups Projects
Commit 39a38679 authored by Stefan Bürk's avatar Stefan Bürk
Browse files

[TASK] Ensure correct SiteConfiguration in `SlugServiceTest.php`

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: default avatarBenni Mack <benni@typo3.org>
Reviewed-by: default avatarGarvin Hicking <gh@faktor-e.de>
Reviewed-by: default avatarStefan Bürk <stefan@buerk.tech>
Tested-by: default avatarStefan Bürk <stefan@buerk.tech>
Tested-by: default avatarcore-ci <typo3@b13.com>
Reviewed-by: default avatarBenni Mack <benni@typo3.org>
Tested-by: default avatarGarvin Hicking <gh@faktor-e.de>
parent 74a7d937
Branches
Tags
No related merge requests found
......@@ -29,6 +29,7 @@ use TYPO3\CMS\Core\EventDispatcher\ListenerProvider;
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;
......@@ -562,7 +563,7 @@ final class SlugServiceTest extends FunctionalTestCase
'rootPageId' => 1,
'base' => '/',
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}
......@@ -572,7 +573,7 @@ final class SlugServiceTest extends FunctionalTestCase
'rootPageId' => 1,
'base' => '/sub-folder',
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}
......@@ -583,7 +584,7 @@ final class SlugServiceTest extends FunctionalTestCase
'base' => '/',
'languages' => $this->languages,
];
$siteConfiguration = GeneralUtility::makeInstance(SiteConfiguration::class);
$siteConfiguration = $this->get(SiteConfiguration::class);
$siteConfiguration->write('testing', $configuration);
}
......@@ -602,13 +603,14 @@ final class SlugServiceTest extends FunctionalTestCase
'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),
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment