From a49e1432939ac486069806763e448ff3906d768b Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 30 May 2021 18:50:14 +0200 Subject: [PATCH] recoverer: add test cases --- middleware/recoverer_test.go | 47 ++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 middleware/recoverer_test.go diff --git a/middleware/recoverer_test.go b/middleware/recoverer_test.go new file mode 100644 index 00000000..7c4e70b3 --- /dev/null +++ b/middleware/recoverer_test.go @@ -0,0 +1,47 @@ +package middleware + +import ( + "net/http" + "net/http/httptest" + "testing" + + "github.com/go-chi/chi/v5" +) + +func TestRecoverer(t *testing.T) { + w := httptest.NewRecorder() + + r := chi.NewRouter() + r.Use(Recoverer) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + panic("panic") + }) + + req, _ := http.NewRequest("GET", "/", nil) + r.ServeHTTP(w, req) + if w.Result().StatusCode != http.StatusInternalServerError { + t.Fatalf("Panic not recovered") + } +} + +func TestRecovererAbortHandler(t *testing.T) { + defer func() { + rcv := recover() + if rcv != http.ErrAbortHandler { + t.Fatalf("http.ErrAbortHandler should not be recovered") + } + }() + + w := httptest.NewRecorder() + + r := chi.NewRouter() + r.Use(Recoverer) + + r.Get("/", func(w http.ResponseWriter, r *http.Request) { + panic(http.ErrAbortHandler) + }) + + req, _ := http.NewRequest("GET", "/", nil) + r.ServeHTTP(w, req) +}