mirror of
https://gitee.com/johng/gf
synced 2026-07-02 19:31:07 +08:00
fix(net/gclient): Client Clone with allocated header/cookie (#3902)
This commit is contained in:
@ -84,17 +84,13 @@ func New() *Client {
|
||||
func (c *Client) Clone() *Client {
|
||||
newClient := New()
|
||||
*newClient = *c
|
||||
if len(c.header) > 0 {
|
||||
newClient.header = make(map[string]string)
|
||||
for k, v := range c.header {
|
||||
newClient.header[k] = v
|
||||
}
|
||||
newClient.header = make(map[string]string, len(c.header))
|
||||
for k, v := range c.header {
|
||||
newClient.header[k] = v
|
||||
}
|
||||
if len(c.cookies) > 0 {
|
||||
newClient.cookies = make(map[string]string)
|
||||
for k, v := range c.cookies {
|
||||
newClient.cookies[k] = v
|
||||
}
|
||||
newClient.cookies = make(map[string]string, len(c.cookies))
|
||||
for k, v := range c.cookies {
|
||||
newClient.cookies[k] = v
|
||||
}
|
||||
return newClient
|
||||
}
|
||||
|
||||
@ -177,6 +177,40 @@ func Test_Client_Chain_Header(t *testing.T) {
|
||||
t.Assert(c.HeaderRaw("test1: 1234567890\ntest2: abcdefg").GetContent(ctx, "/header1"), "1234567890")
|
||||
t.Assert(c.HeaderRaw("test1: 1234567890\ntest2: abcdefg").GetContent(ctx, "/header2"), "abcdefg")
|
||||
})
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
c := g.Client()
|
||||
c.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", s.GetListenedPort()))
|
||||
|
||||
t.Assert(c.GetContent(ctx, "/header1"), "")
|
||||
|
||||
copyWithHeader := c.Header(g.MapStrStr{"test1": "1234567890"})
|
||||
t.Assert(copyWithHeader.GetContent(ctx, "/header1"), "1234567890")
|
||||
|
||||
t.Assert(c.GetContent(ctx, "/header1"), "")
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Client_Chain_Cookie(t *testing.T) {
|
||||
s := g.Server(guid.S())
|
||||
s.BindHandler("/cookie", func(r *ghttp.Request) {
|
||||
r.Response.Write(r.Cookie.Get("test", "def"))
|
||||
})
|
||||
s.SetDumpRouterMap(false)
|
||||
s.Start()
|
||||
defer s.Shutdown()
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
gtest.C(t, func(t *gtest.T) {
|
||||
c := g.Client()
|
||||
c.SetPrefix(fmt.Sprintf("http://127.0.0.1:%d", s.GetListenedPort()))
|
||||
|
||||
t.Assert(c.GetContent(ctx, "/cookie"), "def")
|
||||
|
||||
copyWithCookie := c.Cookie(g.MapStrStr{"test": "1234567890"})
|
||||
t.Assert(copyWithCookie.GetContent(ctx, "/cookie"), "1234567890")
|
||||
|
||||
t.Assert(c.GetContent(ctx, "/cookie"), "def")
|
||||
})
|
||||
}
|
||||
|
||||
func Test_Client_Chain_Context(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user