-
Notifications
You must be signed in to change notification settings - Fork 0
/
middleware_test.go
82 lines (71 loc) · 1.48 KB
/
middleware_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
package goose
import (
"net/http"
"testing"
)
func TestCustomMiddleware(t *testing.T) {
signature := ""
g := New()
g.Use(func(ctx *Context) {
signature += "a"
ctx.Next()
signature += "b"
})
// I put it here to show that the relative position of method Use and GET doesn't matter
g.GET("/", func(ctx *Context) {
signature += "/"
})
g.Use(func(ctx *Context) {
signature += "c"
ctx.Next()
signature += "d"
})
g.Use(func(ctx *Context) {
signature += "e"
})
v1 := g.Group("v1")
v1.Use(func(ctx *Context) {
signature += "f"
ctx.Next()
signature += "g"
})
v1.GET("/", func(ctx *Context) {
signature += "@"
})
v1.GET("/hello", func(ctx *Context) {
signature += "#"
})
// test /
signature = ""
w := sendRequest(g, http.MethodGet, "/")
if w.Code != http.StatusOK {
t.Errorf("Got status code %d instead of 200.", w.Code)
}
want := "ace/db"
got := signature
if got != want {
t.Errorf("Want: %s , Got: %s", want, got)
}
// test /v1/
signature = ""
w = sendRequest(g, http.MethodGet, "/v1/")
if w.Code != http.StatusOK {
t.Errorf("Got status code %d instead of 200.", w.Code)
}
want = "acef@gdb"
got = signature
if got != want {
t.Errorf("Want: %s , Got: %s", want, got)
}
// test /v1/hello
signature = ""
w = sendRequest(g, http.MethodGet, "/v1/hello")
if w.Code != http.StatusOK {
t.Errorf("Got status code %d instead of 200.", w.Code)
}
want = "acef#gdb"
got = signature
if got != want {
t.Errorf("Want: %s , Got: %s", want, got)
}
}