Skip to content

Commit 0275c91

Browse files
committed
Adds middleware ordering test with Group
1 parent 8a4c82c commit 0275c91

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

mux_test.go

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ func dummyMiddleware(handler http.Handler) http.Handler {
2626
func orderMiddleware(s string) func(http.Handler) http.Handler {
2727
return func(handler http.Handler) http.Handler {
2828
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
29-
orderValue := strings.Split(r.Header.Get("X-Test-Order"), ",")
30-
orderValue = append(orderValue, s)
31-
32-
r.Header.Set("X-Test-Order", strings.Join(orderValue, ","))
29+
r.Header.Add("X-Test-Order", s)
3330
w.Header().Set("X-Test-Response", "response")
3431
handler.ServeHTTP(w, r)
3532
})
@@ -51,8 +48,7 @@ func TestUse(t *testing.T) {
5148

5249
s.Mux.ServeHTTP(w, r)
5350

54-
orderValue := strings.Split(r.Header.Get("X-Test-Order"), ",")
55-
require.Equal(t, []string{"Start!", "First!"}, orderValue)
51+
require.Equal(t, []string{"Start!", "First!"}, r.Header["X-Test-Order"])
5652
})
5753

5854
t.Run("multiple uses of Use", func(t *testing.T) {
@@ -69,8 +65,7 @@ func TestUse(t *testing.T) {
6965

7066
s.Mux.ServeHTTP(w, r)
7167

72-
orderValue := strings.Split(r.Header.Get("X-Test-Order"), ",")
73-
require.Equal(t, []string{"Start!", "First!", "Second!"}, orderValue)
68+
require.Equal(t, []string{"Start!", "First!", "Second!"}, r.Header["X-Test-Order"])
7469
})
7570

7671
t.Run("variadic use of Use", func(t *testing.T) {
@@ -87,8 +82,7 @@ func TestUse(t *testing.T) {
8782

8883
s.Mux.ServeHTTP(w, r)
8984

90-
orderValue := strings.Split(r.Header.Get("X-Test-Order"), ",")
91-
require.Equal(t, []string{"Start!", "First!", "Second!", "Third!"}, orderValue)
85+
require.Equal(t, []string{"Start!", "First!", "Second!", "Third!"}, r.Header["X-Test-Order"])
9286
})
9387

9488
t.Run("variadic use of Route Get", func(t *testing.T) {
@@ -105,13 +99,26 @@ func TestUse(t *testing.T) {
10599

106100
s.Mux.ServeHTTP(w, r)
107101

108-
orderValue := strings.Split(r.Header.Get("X-Test-Order"), ",")
109-
require.Equal(
110-
t, []string{
111-
"Start!", "First!", "Second!", "Third!", "Fourth!", "Fifth!",
112-
},
113-
orderValue,
114-
)
102+
require.Equal(t, []string{"Start!", "First!", "Second!", "Third!", "Fourth!", "Fifth!"}, r.Header["X-Test-Order"])
103+
})
104+
105+
t.Run("group middlewares", func(t *testing.T) {
106+
s := NewServer()
107+
Use(s, orderMiddleware("First!"))
108+
group := Group(s, "/group")
109+
Use(group, orderMiddleware("Second!"))
110+
Use(group, orderMiddleware("Third!"))
111+
Get(group, "/test", func(ctx *ContextNoBody) (string, error) {
112+
return "test", nil
113+
})
114+
115+
r := httptest.NewRequest(http.MethodGet, "/group/test", nil)
116+
r.Header.Set("X-Test-Order", "Start!")
117+
w := httptest.NewRecorder()
118+
119+
s.Mux.ServeHTTP(w, r)
120+
121+
require.Equal(t, []string{"Start!", "First!", "Second!", "Third!"}, r.Header["X-Test-Order"])
115122
})
116123
}
117124

0 commit comments

Comments
 (0)