github.com/gogf/gf@v1.16.9/net/ghttp/ghttp_unit_router_group_group_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package ghttp_test 8 9 import ( 10 "fmt" 11 "testing" 12 "time" 13 14 "github.com/gogf/gf/frame/g" 15 "github.com/gogf/gf/net/ghttp" 16 "github.com/gogf/gf/test/gtest" 17 ) 18 19 func Test_Router_Group_Group(t *testing.T) { 20 p, _ := ports.PopRand() 21 s := g.Server(p) 22 s.Group("/api.v2", func(group *ghttp.RouterGroup) { 23 group.Middleware(func(r *ghttp.Request) { 24 r.Response.Write("1") 25 r.Middleware.Next() 26 r.Response.Write("2") 27 }) 28 group.GET("/test", func(r *ghttp.Request) { 29 r.Response.Write("test") 30 }) 31 group.Group("/order", func(group *ghttp.RouterGroup) { 32 group.GET("/list", func(r *ghttp.Request) { 33 r.Response.Write("list") 34 }) 35 group.PUT("/update", func(r *ghttp.Request) { 36 r.Response.Write("update") 37 }) 38 }) 39 group.Group("/user", func(group *ghttp.RouterGroup) { 40 group.GET("/info", func(r *ghttp.Request) { 41 r.Response.Write("info") 42 }) 43 group.POST("/edit", func(r *ghttp.Request) { 44 r.Response.Write("edit") 45 }) 46 group.DELETE("/drop", func(r *ghttp.Request) { 47 r.Response.Write("drop") 48 }) 49 }) 50 group.Group("/hook", func(group *ghttp.RouterGroup) { 51 group.Hook("/*", ghttp.HookBeforeServe, func(r *ghttp.Request) { 52 r.Response.Write("hook any") 53 }) 54 group.Hook("/:name", ghttp.HookBeforeServe, func(r *ghttp.Request) { 55 r.Response.Write("hook name") 56 }) 57 }) 58 }) 59 s.SetPort(p) 60 s.SetDumpRouterMap(false) 61 s.Start() 62 defer s.Shutdown() 63 64 time.Sleep(100 * time.Millisecond) 65 gtest.C(t, func(t *gtest.T) { 66 client := g.Client() 67 client.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", p)) 68 69 t.Assert(client.GetContent("/"), "Not Found") 70 t.Assert(client.GetContent("/api.v2"), "Not Found") 71 t.Assert(client.GetContent("/api.v2/test"), "1test2") 72 t.Assert(client.GetContent("/api.v2/hook"), "hook any") 73 t.Assert(client.GetContent("/api.v2/hook/name"), "hook namehook any") 74 t.Assert(client.GetContent("/api.v2/hook/name/any"), "hook any") 75 t.Assert(client.GetContent("/api.v2/order/list"), "1list2") 76 t.Assert(client.GetContent("/api.v2/order/update"), "Not Found") 77 t.Assert(client.PutContent("/api.v2/order/update"), "1update2") 78 t.Assert(client.GetContent("/api.v2/user/drop"), "Not Found") 79 t.Assert(client.DeleteContent("/api.v2/user/drop"), "1drop2") 80 t.Assert(client.GetContent("/api.v2/user/edit"), "Not Found") 81 t.Assert(client.PostContent("/api.v2/user/edit"), "1edit2") 82 t.Assert(client.GetContent("/api.v2/user/info"), "1info2") 83 }) 84 }