MCPcopy Create free account
hub / github.com/imgproxy/imgproxy / TestMiddlewareOrder

Method TestMiddlewareOrder

server/router_test.go:125–157  ·  view source on GitHub ↗

TestMiddlewareOrder checks middleware ordering and functionality

()

Source from the content-addressed store, hash-verified

123
124// TestMiddlewareOrder checks middleware ordering and functionality
125func (s *RouterTestSuite) TestMiddlewareOrder() {
126 var order []string
127
128 middleware1 := func(next server.RouteHandler) server.RouteHandler {
129 return func(reqID string, rw server.ResponseWriter, req *http.Request) *server.Error {
130 order = append(order, "middleware1")
131 return next(reqID, rw, req)
132 }
133 }
134
135 middleware2 := func(next server.RouteHandler) server.RouteHandler {
136 return func(reqID string, rw server.ResponseWriter, req *http.Request) *server.Error {
137 order = append(order, "middleware2")
138 return next(reqID, rw, req)
139 }
140 }
141
142 handler := func(reqID string, rw server.ResponseWriter, req *http.Request) *server.Error {
143 order = append(order, "handler")
144 rw.WriteHeader(http.StatusOK)
145 return nil
146 }
147
148 s.router.GET("/test", handler, middleware2, middleware1)
149
150 req := httptest.NewRequest(http.MethodGet, "/api/test", nil)
151 rw := httptest.NewRecorder()
152
153 s.router.ServeHTTP(rw, req)
154
155 // Middleware should execute in the order they are passed (first added first)
156 s.Require().Equal([]string{"middleware1", "middleware2", "handler"}, order)
157}
158
159// TestServeHTTP tests ServeHTTP method
160func (s *RouterTestSuite) TestServeHTTP() {

Callers

nothing calls this directly

Calls 4

WriteHeaderMethod · 0.80
NewRequestMethod · 0.80
ServeHTTPMethod · 0.80
GETMethod · 0.45

Tested by

no test coverage detected