@@ -528,3 +528,48 @@ func TestRouterServeFiles(t *testing.T) {
528528 t .Error ("serving file failed" )
529529 }
530530}
531+
532+ func TestRouterUseRawPathSuccess (t * testing.T ) {
533+ router := New ()
534+ router .UseRawPath = true
535+
536+ routed := false
537+ router .Handle ("GET" , "/user/:name" , func (w http.ResponseWriter , r * http.Request , ps Params ) {
538+ routed = true
539+ want := Params {Param {"name" , "abc/123" }}
540+ if ! reflect .DeepEqual (ps , want ) {
541+ t .Fatalf ("wrong wildcard values: want %v, got %v" , want , ps )
542+ }
543+ })
544+
545+ w := new (mockResponseWriter )
546+
547+ req , _ := http .NewRequest ("GET" , "/user/abc%2F123" , nil )
548+ router .ServeHTTP (w , req )
549+
550+ if ! routed {
551+ t .Fatal ("routing failed" )
552+ }
553+ }
554+
555+ func TestRouterUseRawPathFailure (t * testing.T ) {
556+ router := New ()
557+
558+ routed := false
559+ router .Handle ("GET" , "/user/:name" , func (w http.ResponseWriter , r * http.Request , ps Params ) {
560+ routed = true
561+ want := Params {Param {"name" , "abc/123" }}
562+ if ! reflect .DeepEqual (ps , want ) {
563+ t .Fatalf ("wrong wildcard values: want %v, got %v" , want , ps )
564+ }
565+ })
566+
567+ w := new (mockResponseWriter )
568+
569+ req , _ := http .NewRequest ("GET" , "/user/abc%2F123" , nil )
570+ router .ServeHTTP (w , req )
571+
572+ if routed {
573+ t .Fatal ("routing unexpectedly succeeded" )
574+ }
575+ }
0 commit comments