55namespace Flowpack \SeoRouting \Tests \Unit ;
66
77use Flowpack \SeoRouting \Enum \TrailingSlashModeEnum ;
8+ use Flowpack \SeoRouting \Exceptions \Http \Exception as HttpException ;
89use Flowpack \SeoRouting \Helper \BlocklistHelper ;
910use Flowpack \SeoRouting \Helper \ConfigurationHelper ;
1011use Flowpack \SeoRouting \Helper \LowerCaseHelper ;
2324use ReflectionClass ;
2425
2526#[CoversClass(RoutingMiddleware::class)]
27+ #[CoversClass(HttpException::class)]
2628class RoutingMiddlewareTest extends TestCase
2729{
2830 private readonly RoutingMiddleware $ routingMiddleware ;
@@ -82,6 +84,7 @@ public function testProcessShouldHandleUrlsCorrectly(
8284 int $ statusCode ,
8385 TrailingSlashModeEnum $ trailingSlashMode ,
8486 int $ handlerStatusCode = 200 ,
87+ ?string $ expectedException = null ,
8588 ): void {
8689 $ originalUri = new Uri ($ originalUrl );
8790 $ expectedUri = new Uri ($ expectedUrl );
@@ -98,8 +101,12 @@ public function testProcessShouldHandleUrlsCorrectly(
98101 $ this ->requestMock ->expects ($ this ->once ())->method ('getUri ' )->willReturn ($ originalUri );
99102
100103 $ pathChanged = $ originalUrl !== $ expectedUrl ;
101-
102- if (!$ pathChanged ) {
104+ if (is_string ($ expectedException )) {
105+ $ this ->expectException ($ expectedException );
106+ $ this ->responseFactoryMock ->expects ($ this ->never ())->method ('createResponse ' );
107+ $ this ->routingMiddleware ->process ($ this ->requestMock , $ this ->requestHandlerMock );
108+ return ;
109+ } elseif (!$ pathChanged ) {
103110 $ this ->requestHandlerMock ->method ('handle ' )->willReturn ($ this ->responseMock );
104111 } elseif ($ handlerStatusCode >= 400 ) {
105112 $ this ->responseMock ->method ('getStatusCode ' )->willReturn ($ handlerStatusCode );
@@ -122,7 +129,6 @@ public function testProcessShouldHandleUrlsCorrectly(
122129 ->with ('Location ' , (string )$ expectedUri )
123130 ->willReturnSelf ();
124131 }
125-
126132 self ::assertSame (
127133 $ this ->responseMock ,
128134 $ this ->routingMiddleware ->process ($ this ->requestMock , $ this ->requestHandlerMock )
@@ -190,6 +196,16 @@ public static function urlsDataProvider(): array
190196 'trailingSlashMode ' => TrailingSlashModeEnum::ADD ,
191197 'handlerStatusCode ' => 404 ,
192198 ],
199+ [
200+ 'originalUrl ' => 'https://local.dev ' ,
201+ 'expectedUrl ' => 'https://local.dev/ ' ,
202+ 'isTrailingSlashEnabledResult ' => true ,
203+ 'isToLowerCaseEnabledResult ' => false ,
204+ 'isUriInBlocklistResult ' => false ,
205+ 'statusCode ' => 404 ,
206+ 'trailingSlashMode ' => TrailingSlashModeEnum::ADD ,
207+ 'expectedException ' => HttpException::class
208+ ],
193209 ];
194210 }
195211}
0 commit comments