diff --git a/module/Core/src/ErrorHandler/NotFoundRedirectHandler.php b/module/Core/src/ErrorHandler/NotFoundRedirectHandler.php index 44cd2ddd..57bc4c41 100644 --- a/module/Core/src/ErrorHandler/NotFoundRedirectHandler.php +++ b/module/Core/src/ErrorHandler/NotFoundRedirectHandler.php @@ -27,16 +27,9 @@ class NotFoundRedirectHandler implements MiddlewareInterface /** @var NotFoundType $notFoundType */ $notFoundType = $request->getAttribute(NotFoundType::class); $authority = $request->getUri()->getAuthority(); - $domainSpecificRedirect = $this->resolveDomainSpecificRedirect($authority, $notFoundType); + $redirectConfig = $this->domainService->findByAuthority($authority) ?? $this->redirectOptions; + $redirectResponse = $this->redirectResolver->resolveRedirectResponse($notFoundType, $redirectConfig); - return $domainSpecificRedirect - ?? $this->redirectResolver->resolveRedirectResponse($notFoundType, $this->redirectOptions) - ?? $handler->handle($request); - } - - private function resolveDomainSpecificRedirect(string $authority, NotFoundType $notFoundType): ?ResponseInterface - { - $domain = $this->domainService->findByAuthority($authority); - return $domain === null ? null : $this->redirectResolver->resolveRedirectResponse($notFoundType, $domain); + return $redirectResponse ?? $handler->handle($request); } } diff --git a/module/Core/test/ErrorHandler/NotFoundRedirectHandlerTest.php b/module/Core/test/ErrorHandler/NotFoundRedirectHandlerTest.php index 0d257d8e..877e96b7 100644 --- a/module/Core/test/ErrorHandler/NotFoundRedirectHandlerTest.php +++ b/module/Core/test/ErrorHandler/NotFoundRedirectHandlerTest.php @@ -72,17 +72,18 @@ class NotFoundRedirectHandlerTest extends TestCase $domainService->findByAuthority(Argument::cetera()) ->willReturn(null) ->shouldBeCalledOnce(); - $resolver->resolveRedirectResponse(Argument::cetera()) - ->willReturn(null) - ->shouldBeCalledOnce(); + $resolver->resolveRedirectResponse( + Argument::type(NotFoundType::class), + Argument::type(NotFoundRedirectOptions::class), + )->willReturn(null)->shouldBeCalledOnce(); }]; yield 'non-redirecting domain' => [function (ObjectProphecy $domainService, ObjectProphecy $resolver): void { $domainService->findByAuthority(Argument::cetera()) ->willReturn(Domain::withAuthority('')) ->shouldBeCalledOnce(); - $resolver->resolveRedirectResponse(Argument::cetera()) + $resolver->resolveRedirectResponse(Argument::type(NotFoundType::class), Argument::type(Domain::class)) ->willReturn(null) - ->shouldBeCalledTimes(2); + ->shouldBeCalledOnce(); }]; }