42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package middleware
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoggingCapturesStatusCode(t *testing.T) {
|
|
h := Logging(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusCreated)
|
|
_, _ = w.Write([]byte("created"))
|
|
}))
|
|
w := httptest.NewRecorder()
|
|
h.ServeHTTP(w, httptest.NewRequest(http.MethodPost, "/x", nil))
|
|
if w.Code != http.StatusCreated || w.Body.String() != "created" {
|
|
t.Fatalf("response = %d %q", w.Code, w.Body.String())
|
|
}
|
|
}
|
|
|
|
func TestRecoveryConvertsPanicToInternalError(t *testing.T) {
|
|
h := Recovery(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
panic("boom")
|
|
}))
|
|
w := httptest.NewRecorder()
|
|
h.ServeHTTP(w, httptest.NewRequest(http.MethodGet, "/panic", nil))
|
|
if w.Code != http.StatusInternalServerError {
|
|
t.Fatalf("status = %d body=%s", w.Code, w.Body.String())
|
|
}
|
|
}
|
|
|
|
func TestRecoveryPassesThroughNormalRequest(t *testing.T) {
|
|
h := Recovery(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusAccepted)
|
|
}))
|
|
w := httptest.NewRecorder()
|
|
h.ServeHTTP(w, httptest.NewRequest(http.MethodGet, "/ok", nil))
|
|
if w.Code != http.StatusAccepted {
|
|
t.Fatalf("status = %d", w.Code)
|
|
}
|
|
}
|