rename AddMiddleware to BindMiddleWareDefault for ghttp.Server; add more unit test cases fpr gstr

This commit is contained in:
John
2019-09-19 20:19:07 +08:00
parent b9fbfb91bd
commit 5424935fd9
4 changed files with 67 additions and 32 deletions

View File

@ -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")

View File

@ -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`)

View File

@ -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{}{}

View File

@ -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)