/
header_test.go
96 lines (73 loc) · 2.3 KB
/
header_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package azugo
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/valyala/fasthttp"
)
func TestHeaders(t *testing.T) {
a := NewTestApp()
a.Start(t)
defer a.Stop()
want := "gopher"
a.Get("/user", func(ctx *Context) {
param := ctx.Header.Get("X-USER")
assert.Equal(t, want, param, "wrong request header value")
ctx.Header.Set("X-Real-User", param)
})
c := a.TestClient()
resp, err := c.Get("/user", c.WithHeader("X-User", want))
defer fasthttp.ReleaseResponse(resp)
require.NoError(t, err)
assert.Equal(t, want, string(resp.Header.Peek("X-Real-User")), "wrong response header value")
}
func TestHeaderDel(t *testing.T) {
a := NewTestApp()
a.Start(t)
defer a.Stop()
a.Get("/user", func(ctx *Context) {
param := ctx.Header.Get("X-USER")
assert.NotEmpty(t, param, "request header value should not be empty")
ctx.Header.Del("X-user")
param = ctx.Header.Get("X-USER")
assert.Empty(t, param, "request header value should be empty")
})
c := a.TestClient()
resp, err := c.Get("/user", c.WithHeader("X-User", "gopher"))
defer fasthttp.ReleaseResponse(resp)
require.NoError(t, err)
}
func TestHeaderValues(t *testing.T) {
a := NewTestApp()
a.Start(t)
defer a.Stop()
a.Get("/user", func(ctx *Context) {
param := ctx.Header.Values("X-Users")
assert.ElementsMatch(t, []string{"gopher", "user", "test"}, param, "wrong request header values")
param = ctx.Header.Values("X-User")
assert.ElementsMatch(t, []string{"gopher"}, param, "wrong request header values")
})
c := a.TestClient()
resp, err := c.Get("/user", c.WithHeader("X-Users", "gopher,user"), c.WithHeader("X-Users", "test"), c.WithHeader("X-User", "gopher"))
defer fasthttp.ReleaseResponse(resp)
require.NoError(t, err)
}
func TestHeaderAdd(t *testing.T) {
a := NewTestApp()
a.Start(t)
defer a.Stop()
a.Get("/user", func(ctx *Context) {
ctx.Header.Set("X-User", "gopher")
ctx.Header.Add("X-User", "test")
})
resp, err := a.TestClient().Get("/user")
defer fasthttp.ReleaseResponse(resp)
require.NoError(t, err)
values := make([]string, 0)
resp.Header.VisitAll(func(key, value []byte) {
if string(key) == "X-User" {
values = append(values, string(value))
}
})
assert.ElementsMatch(t, []string{"gopher", "test"}, values, "wrong response header values")
}