github.com/unionj-cloud/go-doudou@v1.3.8-0.20221011095552-0088008e5b31/framework/http/httprouter/routegroup_test.go (about) 1 package httprouter 2 3 import ( 4 "net/http" 5 "testing" 6 ) 7 8 func TestRouteGroupOfARouteGroup(t *testing.T) { 9 var get bool 10 router := New() 11 router.SaveMatchedRoutePath = false 12 foo := router.NewGroup("/foo") // creates /foo group 13 bar := foo.NewGroup("/bar") 14 15 bar.GET("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) { 16 get = true 17 }) 18 19 w := new(mockResponseWriter) 20 21 r, _ := http.NewRequest("GET", "/foo/bar/GET", nil) 22 router.ServeHTTP(w, r) 23 if !get { 24 t.Error("routing GET /foo/bar/GET failed") 25 } 26 27 } 28 29 func TestRouteGroupAPI(t *testing.T) { 30 var get, head, options, post, put, patch, delete, handler, handlerFunc bool 31 32 httpHandler := handlerStruct{&handler} 33 34 router := New() 35 router.SaveMatchedRoutePath = false 36 group := router.NewGroup("/foo") // creates /foo group 37 38 group.GET("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) { 39 get = true 40 }) 41 group.HEAD("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) { 42 head = true 43 }) 44 group.OPTIONS("/GET", func(w http.ResponseWriter, r *http.Request, _ Params) { 45 options = true 46 }) 47 group.POST("/POST", func(w http.ResponseWriter, r *http.Request, _ Params) { 48 post = true 49 }) 50 group.PUT("/PUT", func(w http.ResponseWriter, r *http.Request, _ Params) { 51 put = true 52 }) 53 group.PATCH("/PATCH", func(w http.ResponseWriter, r *http.Request, _ Params) { 54 patch = true 55 }) 56 group.DELETE("/DELETE", func(w http.ResponseWriter, r *http.Request, _ Params) { 57 delete = true 58 }) 59 group.Handler("GET", "/Handler", httpHandler) 60 group.HandlerFunc("GET", "/HandlerFunc", func(w http.ResponseWriter, r *http.Request) { 61 handlerFunc = true 62 }) 63 64 w := new(mockResponseWriter) 65 66 r, _ := http.NewRequest("GET", "/foo/GET", nil) 67 router.ServeHTTP(w, r) 68 if !get { 69 t.Error("routing /foo/GET failed") 70 } 71 72 r, _ = http.NewRequest("HEAD", "/foo/GET", nil) 73 router.ServeHTTP(w, r) 74 if !head { 75 t.Error("routing HEAD failed") 76 } 77 78 r, _ = http.NewRequest("OPTIONS", "/foo/GET", nil) 79 router.ServeHTTP(w, r) 80 if !options { 81 t.Error("routing OPTIONS failed") 82 } 83 84 r, _ = http.NewRequest("POST", "/foo/POST", nil) 85 router.ServeHTTP(w, r) 86 if !post { 87 t.Error("routing POST failed") 88 } 89 90 r, _ = http.NewRequest("PUT", "/foo/PUT", nil) 91 router.ServeHTTP(w, r) 92 if !put { 93 t.Error("routing PUT failed") 94 } 95 96 r, _ = http.NewRequest("PATCH", "/foo/PATCH", nil) 97 router.ServeHTTP(w, r) 98 if !patch { 99 t.Error("routing PATCH failed") 100 } 101 102 r, _ = http.NewRequest("DELETE", "/foo/DELETE", nil) 103 router.ServeHTTP(w, r) 104 if !delete { 105 t.Error("routing DELETE failed") 106 } 107 108 r, _ = http.NewRequest("GET", "/foo/Handler", nil) 109 router.ServeHTTP(w, r) 110 if !handler { 111 t.Error("routing Handler failed") 112 } 113 114 r, _ = http.NewRequest("GET", "/foo/HandlerFunc", nil) 115 router.ServeHTTP(w, r) 116 if !handlerFunc { 117 t.Error("routing HandlerFunc failed") 118 } 119 }