From 1e0b6be67da1b024ea978348adf93660d3e8fb88 Mon Sep 17 00:00:00 2001 From: Alejandro Celaya Date: Tue, 18 Nov 2025 09:06:11 +0100 Subject: [PATCH] Improved NorFoundRedirectResolver test --- .../Config/NotFoundRedirectResolverTest.php | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/module/Core/test/Config/NotFoundRedirectResolverTest.php b/module/Core/test/Config/NotFoundRedirectResolverTest.php index d2e750db..796cc3bb 100644 --- a/module/Core/test/Config/NotFoundRedirectResolverTest.php +++ b/module/Core/test/Config/NotFoundRedirectResolverTest.php @@ -15,7 +15,7 @@ use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\UriInterface; -use Psr\Log\NullLogger; +use Psr\Log\LoggerInterface; use Shlinkio\Shlink\Core\Action\RedirectAction; use Shlinkio\Shlink\Core\Config\NotFoundRedirectResolver; use Shlinkio\Shlink\Core\Config\Options\NotFoundRedirectOptions; @@ -28,11 +28,14 @@ class NotFoundRedirectResolverTest extends TestCase { private NotFoundRedirectResolver $resolver; private MockObject & RedirectResponseHelperInterface $helper; + private MockObject & LoggerInterface $logger; protected function setUp(): void { $this->helper = $this->createMock(RedirectResponseHelperInterface::class); - $this->resolver = new NotFoundRedirectResolver($this->helper, new NullLogger()); + $this->logger = $this->createMock(LoggerInterface::class); + + $this->resolver = new NotFoundRedirectResolver($this->helper, $this->logger); } #[Test, DataProvider('provideRedirects')] @@ -123,6 +126,22 @@ class NotFoundRedirectResolverTest extends TestCase self::assertNull($result); } + #[Test] + public function warningMessageIsLoggedIfRedirectUrlIsMalformed(): void + { + $this->logger->expects($this->once())->method('warning')->with( + 'It was not possible to parse "{url}" as a valid URL: {e}', + $this->isArray(), + ); + + $uri = new Uri('/'); + $this->resolver->resolveRedirectResponse( + self::notFoundType(ServerRequestFactory::fromGlobals()->withUri($uri)), + new NotFoundRedirectOptions(baseUrlRedirect: 'http:///example.com'), + $uri, + ); + } + private static function notFoundType(ServerRequestInterface $req): NotFoundType { return NotFoundType::fromRequest($req, '');