mirror of
https://gitee.com/johng/gf
synced 2026-06-06 16:21:40 +08:00
rename AddMiddleware to BindMiddleWareDefault for ghttp.Server; add more unit test cases fpr gstr
This commit is contained in:
@ -130,18 +130,18 @@ func Test_BindMiddleware_Status(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic1(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic1(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("2")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("3")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("4")
|
||||
@ -162,18 +162,18 @@ func Test_AddMiddleware_Basic1(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic2(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic2(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("PUT:/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("2")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("3")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("4")
|
||||
@ -196,17 +196,17 @@ func Test_AddMiddleware_Basic2(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic3(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic3(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("2")
|
||||
})
|
||||
@ -226,17 +226,17 @@ func Test_AddMiddleware_Basic3(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic4(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic4(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("1")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("2")
|
||||
r.Middleware.Next()
|
||||
})
|
||||
@ -256,17 +256,17 @@ func Test_AddMiddleware_Basic4(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic5(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic5(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("2")
|
||||
r.Middleware.Next()
|
||||
})
|
||||
@ -286,13 +286,13 @@ func Test_AddMiddleware_Basic5(t *testing.T) {
|
||||
})
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Status(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Status(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/test/test", func(r *ghttp.Request) {
|
||||
r.Response.Write("test")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Middleware.Next()
|
||||
})
|
||||
s.SetPort(p)
|
||||
@ -333,16 +333,16 @@ func (o *ObjectMiddleware) Info(r *ghttp.Request) {
|
||||
r.Response.Write("Object Info")
|
||||
}
|
||||
|
||||
func Test_AddMiddleware_Basic6(t *testing.T) {
|
||||
func Test_BindMiddlewareDefault_Basic6(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindObject("/", new(ObjectMiddleware))
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("2")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("3")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("4")
|
||||
@ -385,12 +385,12 @@ func Test_Hook_Middleware_Basic1(t *testing.T) {
|
||||
s.BindHookHandler("/*", ghttp.HOOK_AFTER_SERVE, func(r *ghttp.Request) {
|
||||
r.Response.Write("d")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("1")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("2")
|
||||
})
|
||||
s.AddMiddleware(func(r *ghttp.Request) {
|
||||
s.BindMiddlewareDefault(func(r *ghttp.Request) {
|
||||
r.Response.Write("3")
|
||||
r.Middleware.Next()
|
||||
r.Response.Write("4")
|
||||
|
||||
@ -26,6 +26,9 @@ func Test_Params_Basic(t *testing.T) {
|
||||
p := ports.PopRand()
|
||||
s := g.Server(p)
|
||||
s.BindHandler("/get", func(r *ghttp.Request) {
|
||||
if r.GetQuery("array") != nil {
|
||||
r.Response.Write(r.GetQuery("array"))
|
||||
}
|
||||
if r.GetQuery("slice") != nil {
|
||||
r.Response.Write(r.GetQuery("slice"))
|
||||
}
|
||||
@ -49,6 +52,9 @@ func Test_Params_Basic(t *testing.T) {
|
||||
}
|
||||
})
|
||||
s.BindHandler("/put", func(r *ghttp.Request) {
|
||||
if r.Get("array") != nil {
|
||||
r.Response.Write(r.Get("array"))
|
||||
}
|
||||
if r.Get("slice") != nil {
|
||||
r.Response.Write(r.Get("slice"))
|
||||
}
|
||||
@ -75,6 +81,9 @@ func Test_Params_Basic(t *testing.T) {
|
||||
}
|
||||
})
|
||||
s.BindHandler("/post", func(r *ghttp.Request) {
|
||||
if r.GetPost("array") != nil {
|
||||
r.Response.Write(r.GetPost("array"))
|
||||
}
|
||||
if r.GetPost("slice") != nil {
|
||||
r.Response.Write(r.GetPost("slice"))
|
||||
}
|
||||
@ -161,6 +170,7 @@ func Test_Params_Basic(t *testing.T) {
|
||||
client := ghttp.NewClient()
|
||||
client.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", p))
|
||||
// GET
|
||||
gtest.Assert(client.GetContent("/get", "array[]=1&array[]=2"), `["1","2"]`)
|
||||
gtest.Assert(client.GetContent("/get", "slice=1&slice=2"), `2`)
|
||||
gtest.Assert(client.GetContent("/get", "bool=1"), `true`)
|
||||
gtest.Assert(client.GetContent("/get", "bool=0"), `false`)
|
||||
@ -173,6 +183,7 @@ func Test_Params_Basic(t *testing.T) {
|
||||
gtest.Assert(client.GetContent("/get", "string=key"), `key`)
|
||||
|
||||
// PUT
|
||||
gtest.Assert(client.PutContent("/put", "array[]=1&array[]=2"), `["1","2"]`)
|
||||
gtest.Assert(client.PutContent("/put", "slice=1&slice=2"), `2`)
|
||||
gtest.Assert(client.PutContent("/put", "bool=1"), `true`)
|
||||
gtest.Assert(client.PutContent("/put", "bool=0"), `false`)
|
||||
@ -186,6 +197,7 @@ func Test_Params_Basic(t *testing.T) {
|
||||
gtest.Assert(client.PutContent("/put", "map[a]=1&map[b]=2"), `2`)
|
||||
|
||||
// POST
|
||||
gtest.Assert(client.PostContent("/post", "array[]=1&array[]=2"), `["1","2"]`)
|
||||
gtest.Assert(client.PostContent("/post", "slice=1&slice=2"), `2`)
|
||||
gtest.Assert(client.PostContent("/post", "bool=1"), `true`)
|
||||
gtest.Assert(client.PostContent("/post", "bool=0"), `false`)
|
||||
|
||||
@ -14,13 +14,13 @@ import (
|
||||
|
||||
// Parse parses the string into map[string]interface{}.
|
||||
//
|
||||
// f1=m&f2=n -> map[f1:m f2:n]
|
||||
// f[a]=m&f[b]=n -> map[f:map[a:m b:n]]
|
||||
// f[a][a]=m&f[a][b]=n -> map[f:map[a:map[a:m b:n]]]
|
||||
// f[]=m&f[]=n -> map[f:[m n]]
|
||||
// f[a][]=m&f[a][]=n -> map[f:map[a:[m n]]]
|
||||
// f[][]=m&f[][]=n -> map[f:[map[]]] // Currently does not support nested slice.
|
||||
// f=m&f[a]=n -> error
|
||||
// v1=m&v2=n -> map[v1:m v2:n]
|
||||
// v[a]=m&v[b]=n -> map[v:map[a:m b:n]]
|
||||
// v[a][a]=m&v[a][b]=n -> map[v:map[a:map[a:m b:n]]]
|
||||
// v[]=m&v[]=n -> map[v:[m n]]
|
||||
// v[a][]=m&v[a][]=n -> map[v:map[a:[m n]]]
|
||||
// v[][]=m&v[][]=n -> map[v:[map[]]] // Currently does not support nested slice.
|
||||
// v=m&v[a]=n -> error
|
||||
// a .[[b=c -> map[a___[b:c]
|
||||
//
|
||||
func Parse(s string) (result map[string]interface{}, err error) {
|
||||
@ -102,7 +102,7 @@ func build(result map[string]interface{}, keys []string, value interface{}) erro
|
||||
|
||||
// The end is slice. like f[], f[a][]
|
||||
if keys[1] == "" && length == 2 {
|
||||
// todo nested slice
|
||||
// TODO nested slice
|
||||
if key == "" {
|
||||
return nil
|
||||
}
|
||||
@ -119,7 +119,7 @@ func build(result map[string]interface{}, keys []string, value interface{}) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
// The end is slice + map. like f[][a]
|
||||
// The end is slice + map. like v[][a]
|
||||
if keys[1] == "" && length > 2 && keys[2] != "" {
|
||||
val, ok := result[key]
|
||||
if !ok {
|
||||
@ -144,7 +144,7 @@ func build(result map[string]interface{}, keys []string, value interface{}) erro
|
||||
return nil
|
||||
}
|
||||
|
||||
// map. like f[a], f[a][b]
|
||||
// map, like v[a], v[a][b]
|
||||
val, ok := result[key]
|
||||
if !ok {
|
||||
result[key] = map[string]interface{}{}
|
||||
|
||||
@ -38,6 +38,12 @@ func Test_Parse(t *testing.T) {
|
||||
"b": "2",
|
||||
"c": "3",
|
||||
})
|
||||
m, err = gstr.Parse("a=1&a=2&c=3")
|
||||
gtest.Assert(err, nil)
|
||||
gtest.Assert(m, g.Map{
|
||||
"a": "2",
|
||||
"c": "3",
|
||||
})
|
||||
// map
|
||||
m, err = gstr.Parse("m[a]=1&m[b]=2&m[c]=3")
|
||||
gtest.Assert(err, nil)
|
||||
@ -48,6 +54,14 @@ func Test_Parse(t *testing.T) {
|
||||
"c": "3",
|
||||
},
|
||||
})
|
||||
m, err = gstr.Parse("m[a]=1&m[a]=2&m[b]=3")
|
||||
gtest.Assert(err, nil)
|
||||
gtest.Assert(m, g.Map{
|
||||
"m": g.Map{
|
||||
"a": "2",
|
||||
"b": "3",
|
||||
},
|
||||
})
|
||||
// map - slice
|
||||
m, err = gstr.Parse("m[a][]=1&m[a][]=2")
|
||||
gtest.Assert(err, nil)
|
||||
@ -56,6 +70,15 @@ func Test_Parse(t *testing.T) {
|
||||
"a": g.Slice{"1", "2"},
|
||||
},
|
||||
})
|
||||
m, err = gstr.Parse("m[a][b][]=1&m[a][b][]=2")
|
||||
gtest.Assert(err, nil)
|
||||
gtest.Assert(m, g.Map{
|
||||
"m": g.Map{
|
||||
"a": g.Map{
|
||||
"b": g.Slice{"1", "2"},
|
||||
},
|
||||
},
|
||||
})
|
||||
// map - complicated
|
||||
m, err = gstr.Parse("m[a1][b1][c1][d1]=1&m[a2][b2]=2&m[a3][b3][c3]=3")
|
||||
gtest.Assert(err, nil)
|
||||
|
||||
Reference in New Issue
Block a user