3
3
namespace Amp \Http \Server ;
4
4
5
5
use Amp \ByteStream \Payload ;
6
- use Amp \CompositeException ;
7
6
use Amp \Http \HttpStatus ;
8
7
use Amp \Http \Server \Driver \Client ;
9
8
use Amp \Http \Server \RequestHandler \ClosureRequestHandler ;
10
9
use Amp \Socket \InternetAddress ;
10
+ use ColinODell \PsrTestLogger \TestLogger ;
11
11
use League \Uri ;
12
12
use PHPUnit \Framework \TestCase ;
13
- use Psr \Log \NullLogger ;
14
13
15
14
class RouterTest extends TestCase
16
15
{
17
16
private SocketHttpServer $ server ;
18
17
private ErrorHandler $ errorHandler ;
18
+ private TestLogger $ testLogger ;
19
19
20
20
protected function setUp (): void
21
21
{
22
22
parent ::setUp ();
23
23
24
+ $ this ->testLogger = new TestLogger ();
24
25
$ this ->server = $ this ->createMockServer ();
25
26
$ this ->errorHandler = $ this ->createErrorHandler ();
26
27
}
27
28
28
29
protected function createMockServer (): SocketHttpServer
29
30
{
30
- $ server = SocketHttpServer::createForDirectAccess (new NullLogger );
31
+ $ server = SocketHttpServer::createForDirectAccess ($ this -> testLogger );
31
32
$ server ->expose (new InternetAddress ('127.0.0.1 ' , 0 ));
32
33
return $ server ;
33
34
}
@@ -41,32 +42,31 @@ public function testThrowsOnInvalidCacheSize(): void
41
42
{
42
43
$ this ->expectException (\Error::class);
43
44
44
- new Router ($ this ->createMockServer () , $ this ->createErrorHandler () , 0 );
45
+ new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler , 0 );
45
46
}
46
47
47
48
public function testRouteThrowsOnEmptyMethodString (): void
48
49
{
49
50
$ this ->expectException (\Error::class);
50
51
$ this ->expectExceptionMessage ('Amp\Http\Server\Router::addRoute() requires a non-empty string HTTP method at Argument 1 ' );
51
52
52
- $ router = new Router ($ this ->createMockServer () , $ this ->createErrorHandler () );
53
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
53
54
$ router ->addRoute ("" , "/uri " , new ClosureRequestHandler (function () {
54
55
}));
55
56
}
56
57
57
- public function testUpdateFailsIfStartedWithoutAnyRoutes (): void
58
+ public function testLogsMessageWithoutAnyRoutes (): void
58
59
{
59
- $ router = new Router ($ this ->server , $ this ->errorHandler );
60
-
61
- $ this ->expectException (CompositeException::class);
62
- $ this ->expectExceptionMessage ("Router start failure: no routes registered " );
60
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this ->errorHandler );
63
61
64
62
$ this ->server ->start ($ router , $ this ->errorHandler );
63
+
64
+ self ::assertTrue ($ this ->testLogger ->hasNotice ('No routes registered ' ));
65
65
}
66
66
67
67
public function testUseCanonicalRedirector (): void
68
68
{
69
- $ router = new Router ($ this ->server , $ this ->errorHandler );
69
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
70
70
$ router ->addRoute ("GET " , "/{name}/{age}/? " , new ClosureRequestHandler (function (Request $ req ) use (&$ routeArgs ) {
71
71
$ routeArgs = $ req ->getAttribute (Router::class);
72
72
return new Response ;
@@ -93,7 +93,7 @@ public function testUseCanonicalRedirector(): void
93
93
94
94
public function testMultiplePrefixes (): void
95
95
{
96
- $ router = new Router ($ this ->server , $ this ->errorHandler );
96
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
97
97
$ router ->addRoute ("GET " , "{name} " , new ClosureRequestHandler (function (Request $ req ) use (&$ routeArgs ) {
98
98
$ routeArgs = $ req ->getAttribute (Router::class);
99
99
return new Response ;
@@ -112,7 +112,7 @@ public function testMultiplePrefixes(): void
112
112
113
113
public function testStack (): void
114
114
{
115
- $ router = new Router ($ this ->server , $ this ->errorHandler );
115
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
116
116
$ router ->addRoute ("GET " , "/ " , new ClosureRequestHandler (function (Request $ req ) {
117
117
return new Response (HttpStatus::OK , [], $ req ->getAttribute ("stack " ));
118
118
}));
@@ -143,7 +143,7 @@ public function handleRequest(Request $request, RequestHandler $requestHandler):
143
143
144
144
public function testStackMultipleCalls (): void
145
145
{
146
- $ router = new Router ($ this ->server , $ this ->errorHandler );
146
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
147
147
$ router ->addRoute ("GET " , "/ " , new ClosureRequestHandler (function (Request $ req ) {
148
148
return new Response (HttpStatus::OK , [], $ req ->getAttribute ("stack " ));
149
149
}));
@@ -180,11 +180,11 @@ public function testMerge(): void
180
180
return new Response (HttpStatus::OK , [], $ req ->getUri ()->getPath ());
181
181
});
182
182
183
- $ routerA = new Router ($ this ->server , $ this ->createErrorHandler ());
183
+ $ routerA = new Router ($ this ->server , $ this ->testLogger , $ this -> createErrorHandler ());
184
184
$ routerA ->prefix ("a " );
185
185
$ routerA ->addRoute ("GET " , "{name} " , $ requestHandler );
186
186
187
- $ routerB = new Router ($ this ->server , $ this ->createErrorHandler ());
187
+ $ routerB = new Router ($ this ->server , $ this ->testLogger , $ this -> createErrorHandler ());
188
188
$ routerB ->prefix ("b " );
189
189
$ routerB ->addRoute ("GET " , "{name} " , $ requestHandler );
190
190
@@ -211,7 +211,7 @@ public function testPathIsMatchedDecoded(): void
211
211
return new Response (HttpStatus::OK );
212
212
});
213
213
214
- $ router = new Router ($ this ->server , $ this ->errorHandler );
214
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
215
215
$ router ->addRoute ("GET " , "/fo+ö " , $ requestHandler );
216
216
217
217
$ this ->server ->start ($ router , $ this ->errorHandler );
@@ -233,7 +233,7 @@ public function testFallbackInvokedOnNotFoundRoute(): void
233
233
return new Response (HttpStatus::NO_CONTENT );
234
234
});
235
235
236
- $ router = new Router ($ this ->server , $ this ->errorHandler );
236
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
237
237
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
238
238
$ router ->setFallback ($ fallback );
239
239
@@ -250,7 +250,7 @@ public function testNonAllowedMethod(): void
250
250
return new Response (HttpStatus::OK );
251
251
});
252
252
253
- $ router = new Router ($ this ->server , $ this ->errorHandler );
253
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
254
254
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
255
255
$ router ->addRoute ("DELETE " , "/foo/{name} " , $ requestHandler );
256
256
@@ -270,14 +270,14 @@ public function testMergeAfterStart(): void
270
270
271
271
$ mockServer = $ this ->createMockServer ();
272
272
273
- $ router = new Router ($ this ->server , $ this ->errorHandler );
273
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
274
274
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
275
275
276
276
$ this ->server ->start ($ router , $ this ->errorHandler );
277
277
278
278
$ this ->expectException (\Error::class);
279
279
$ this ->expectExceptionMessage ('Cannot merge routers after ' );
280
- $ router ->merge (new Router ($ mockServer , $ this ->createErrorHandler ()));
280
+ $ router ->merge (new Router ($ mockServer , $ this ->testLogger , $ this -> createErrorHandler ()));
281
281
}
282
282
283
283
public function testPrefixAfterStart (): void
@@ -286,7 +286,7 @@ public function testPrefixAfterStart(): void
286
286
return new Response (HttpStatus::OK );
287
287
});
288
288
289
- $ router = new Router ($ this ->server , $ this ->errorHandler );
289
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
290
290
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
291
291
292
292
$ this ->server ->start ($ router , $ this ->errorHandler );
@@ -302,7 +302,7 @@ public function testAddRouteAfterStart(): void
302
302
return new Response (HttpStatus::OK );
303
303
});
304
304
305
- $ router = new Router ($ this ->server , $ this ->errorHandler );
305
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
306
306
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
307
307
308
308
$ this ->server ->start ($ router , $ this ->errorHandler );
@@ -318,7 +318,7 @@ public function testStackAfterStart(): void
318
318
return new Response (HttpStatus::OK );
319
319
});
320
320
321
- $ router = new Router ($ this ->server , $ this ->errorHandler );
321
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
322
322
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
323
323
324
324
$ this ->server ->start ($ router , $ this ->errorHandler );
@@ -334,7 +334,7 @@ public function testSetFallbackAfterStart(): void
334
334
return new Response (HttpStatus::OK );
335
335
});
336
336
337
- $ router = new Router ($ this ->server , $ this ->errorHandler );
337
+ $ router = new Router ($ this ->server , $ this ->testLogger , $ this -> errorHandler );
338
338
$ router ->addRoute ("GET " , "/foo/{name} " , $ requestHandler );
339
339
340
340
$ this ->server ->start ($ router , $ this ->errorHandler );
0 commit comments