|
package http_middleware_test |
|
|
|
import ( |
|
"net/http" |
|
"net/http/httptest" |
|
"testing" |
|
|
|
. "github.com/wchan2/http_middleware" |
|
) |
|
|
|
var ( |
|
handler = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { |
|
w.WriteHeader(http.StatusOK) |
|
}) |
|
middlewareA = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { |
|
w.Write([]byte("hello world\n")) |
|
}) |
|
middlewareB = http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { |
|
w.Write([]byte("good bye world\n")) |
|
}) |
|
) |
|
|
|
func TestComposeMiddlewareHandler(t *testing.T) { |
|
handlerWithMiddleware := ComposeMiddlewareHandler(middlewareA, middlewareB)(handler) |
|
req, err := http.NewRequest("GET", "http://example.com", nil) |
|
if err != nil { |
|
t.Fatal("Could not create request") |
|
} |
|
recorder := httptest.NewRecorder() |
|
handlerWithMiddleware.ServeHTTP(recorder, req) |
|
|
|
if recorder.Body.String() != "hello world\ngood bye world\n" { |
|
t.Errorf("middleware did not write response body correctly: %s", recorder.Body.String()) |
|
} |
|
if recorder.Code != http.StatusOK { |
|
t.Errorf("handler did not write status code correctly: %d", recorder.Code) |
|
} |
|
} |
|
|
|
func TestMiddlewareHandlerFunc(t *testing.T) { |
|
handlerWithMiddleware := ComposeMiddlewareHandlerFunc(middlewareA, middlewareB)(handler) |
|
req, err := http.NewRequest("GET", "http://example.com", nil) |
|
if err != nil { |
|
t.Fatal("Could not create request") |
|
} |
|
recorder := httptest.NewRecorder() |
|
handlerWithMiddleware.ServeHTTP(recorder, req) |
|
|
|
if recorder.Body.String() != "hello world\ngood bye world\n" { |
|
t.Errorf("middleware did not write response body correctly: %s", recorder.Body.String()) |
|
} |
|
if recorder.Code != http.StatusOK { |
|
t.Errorf("handler did not write status code correctly: %d", recorder.Code) |
|
} |
|
} |