@@ -314,6 +314,8 @@ func TestRouterGroup(t *testing.T) {
314
314
r2 := r1 .Group ("/boo" )
315
315
r3 := r1 .Group ("/goo" )
316
316
r4 := r1 .Group ("/moo" )
317
+ r5 := r4 .Group ("/foo" )
318
+ r6 := r5 .Group ("/foo" )
317
319
fooHit := false
318
320
r1 .POST ("/foo" , func (ctx * fasthttp.RequestCtx ) {
319
321
fooHit = true
@@ -333,6 +335,14 @@ func TestRouterGroup(t *testing.T) {
333
335
barHit = true
334
336
ctx .SetStatusCode (fasthttp .StatusOK )
335
337
})
338
+ r5 .POST ("/bar" , func (ctx * fasthttp.RequestCtx ) {
339
+ barHit = true
340
+ ctx .SetStatusCode (fasthttp .StatusOK )
341
+ })
342
+ r6 .POST ("/bar" , func (ctx * fasthttp.RequestCtx ) {
343
+ barHit = true
344
+ ctx .SetStatusCode (fasthttp .StatusOK )
345
+ })
336
346
s := & fasthttp.Server {
337
347
Handler : r1 .Handler ,
338
348
}
@@ -422,6 +432,45 @@ func TestRouterGroup(t *testing.T) {
422
432
t .FailNow ()
423
433
}
424
434
435
+ rw .r .WriteString ("POST /moo/foo/bar HTTP/1.1\r \n \r \n " )
436
+ go func () {
437
+ ch <- s .ServeConn (rw )
438
+ }()
439
+ select {
440
+ case err := <- ch :
441
+ if err != nil {
442
+ t .Fatalf ("return error %s" , err )
443
+ }
444
+ case <- time .After (100 * time .Millisecond ):
445
+ t .Fatalf ("timeout" )
446
+ }
447
+ if err := resp .Read (br ); err != nil {
448
+ t .Fatalf ("Unexpected error when reading response: %s" , err )
449
+ }
450
+ if ! (resp .Header .StatusCode () == fasthttp .StatusOK && barHit ) {
451
+ t .Errorf ("Chained routing failed with subrouter grouping." )
452
+ t .FailNow ()
453
+ }
454
+ rw .r .WriteString ("POST /moo/foo/foo/bar HTTP/1.1\r \n \r \n " )
455
+ go func () {
456
+ ch <- s .ServeConn (rw )
457
+ }()
458
+ select {
459
+ case err := <- ch :
460
+ if err != nil {
461
+ t .Fatalf ("return error %s" , err )
462
+ }
463
+ case <- time .After (100 * time .Millisecond ):
464
+ t .Fatalf ("timeout" )
465
+ }
466
+ if err := resp .Read (br ); err != nil {
467
+ t .Fatalf ("Unexpected error when reading response: %s" , err )
468
+ }
469
+ if ! (resp .Header .StatusCode () == fasthttp .StatusOK && barHit ) {
470
+ t .Errorf ("Chained routing failed with subrouter grouping." )
471
+ t .FailNow ()
472
+ }
473
+
425
474
rw .r .WriteString ("POST /qax HTTP/1.1\r \n \r \n " )
426
475
go func () {
427
476
ch <- s .ServeConn (rw )
0 commit comments