@@ -9,11 +9,49 @@ import (
99 "io"
1010 "net/http"
1111 "net/http/httptest"
12+ "regexp"
1213 "testing"
1314
1415 "github.com/stretchr/testify/require"
1516)
1617
18+ func Test_App_Mount_PreservesSubAppRegexHandler (t * testing.T ) {
19+ t .Parallel ()
20+
21+ parent := New (Config {
22+ CaseSensitive : true ,
23+ RegexHandler : func (pattern string ) * matchOnlyRegexCompiler {
24+ return & matchOnlyRegexCompiler {re : regexp .MustCompile ("(?i)" + pattern )}
25+ },
26+ })
27+
28+ sub := New (Config {
29+ CaseSensitive : true ,
30+ RegexHandler : regexp .MustCompile ,
31+ })
32+ sub .Get ("/resource/:id<regex(ALLOW)>" , func (c Ctx ) error {
33+ return c .SendStatus (StatusOK )
34+ })
35+
36+ parent .Use ("/mounted" , sub )
37+
38+ resp , err := sub .Test (httptest .NewRequest (MethodGet , "/resource/ALLOW" , http .NoBody ))
39+ require .NoError (t , err )
40+ require .Equal (t , StatusOK , resp .StatusCode )
41+
42+ resp , err = parent .Test (httptest .NewRequest (MethodGet , "/mounted/resource/ALLOW" , http .NoBody ))
43+ require .NoError (t , err )
44+ require .Equal (t , StatusOK , resp .StatusCode )
45+
46+ resp , err = sub .Test (httptest .NewRequest (MethodGet , "/resource/allow" , http .NoBody ))
47+ require .NoError (t , err )
48+ require .Equal (t , StatusNotFound , resp .StatusCode )
49+
50+ resp , err = parent .Test (httptest .NewRequest (MethodGet , "/mounted/resource/allow" , http .NoBody ))
51+ require .NoError (t , err )
52+ require .Equal (t , StatusNotFound , resp .StatusCode )
53+ }
54+
1755// go test -run Test_App_Mount
1856func Test_App_Mount (t * testing.T ) {
1957 t .Parallel ()
0 commit comments