2 declare(strict_types = 1);
19 use Psr\Http\Message\ResponseInterface;
20 use Psr\Http\Message\ServerRequestInterface;
21 use Psr\Http\Server\RequestHandlerInterface;
22 use Psr\Log\NullLogger;
32 use TYPO3\TestingFramework\Core\AccessibleObjectInterface;
33 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
57 protected function setUp(): void
61 GeneralUtility::setSingletonInstance(TimeTracker::class, $timeTrackerStub);
62 $this->controller = $this->getAccessibleMock(TypoScriptFrontendController::class, [
'dummy'], [],
'',
false);
65 $this->responseOutputHandler =
new class implements RequestHandlerInterface {
66 public function handle(ServerRequestInterface $request): ResponseInterface
78 $incomingUrl =
'https://example.com/lotus-flower/en/mr-magpie/bloom/?cHash=XYZ';
79 $expectedResult =
'https://example.com/lotus-flower/en/mr-magpie/bloom/';
80 $this->controller->id = 13;
81 $this->controller->cHash =
'XYZ';
83 $pageArguments =
new PageArguments(13,
'1', [
'cHash' =>
'XYZ'], [
'parameter-from' =>
'path']);
86 $request = $request->withAttribute(
'routing', $pageArguments);
92 static::assertEquals(308, $response->getStatusCode());
93 static::assertEquals($expectedResult, $response->getHeader(
'Location')[0]);
101 $incomingUrl =
'https://example.com/lotus-flower/en/mr-magpie/bloom/?cHash=YAZ';
102 $this->controller->id = 13;
103 $this->controller->cHash =
'XYZ';
105 $pageArguments =
new PageArguments(13,
'1', [
'cHash' =>
'XYZ',
'dynamic' =>
'argument'], [
'parameter-from' =>
'path']);
108 $request = $request->withAttribute(
'routing', $pageArguments);
110 static::expectException(PageNotFoundException::class);
111 static::expectExceptionMessage(
'Request parameters could not be validated (&cHash comparison failed)');