46 lines
1.2 KiB
Go
46 lines
1.2 KiB
Go
package negroni
|
|
|
|
import (
|
|
"bytes"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestRecovery(t *testing.T) {
|
|
buff := bytes.NewBufferString("")
|
|
recorder := httptest.NewRecorder()
|
|
|
|
rec := NewRecovery()
|
|
rec.Logger = log.New(buff, "[negroni] ", 0)
|
|
|
|
n := New()
|
|
// replace log for testing
|
|
n.Use(rec)
|
|
n.UseHandler(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
panic("here is a panic!")
|
|
}))
|
|
n.ServeHTTP(recorder, (*http.Request)(nil))
|
|
expect(t, recorder.Header().Get("Content-Type"), "text/plain; charset=utf-8")
|
|
expect(t, recorder.Code, http.StatusInternalServerError)
|
|
refute(t, recorder.Body.Len(), 0)
|
|
refute(t, len(buff.String()), 0)
|
|
}
|
|
|
|
func TestRecovery_noContentTypeOverwrite(t *testing.T) {
|
|
recorder := httptest.NewRecorder()
|
|
|
|
rec := NewRecovery()
|
|
rec.Logger = log.New(bytes.NewBuffer([]byte{}), "[negroni] ", 0)
|
|
|
|
n := New()
|
|
n.Use(rec)
|
|
n.UseHandler(http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
res.Header().Set("Content-Type", "application/javascript; charset=utf-8")
|
|
panic("here is a panic!")
|
|
}))
|
|
n.ServeHTTP(recorder, (*http.Request)(nil))
|
|
expect(t, recorder.Header().Get("Content-Type"), "application/javascript; charset=utf-8")
|
|
}
|