package middleware_test import ( "net/http" "net/http/httptest" "testing" "github.com/food-ai/backend/internal/middleware" ) func TestRecovery_NoPanic(t *testing.T) { handler := middleware.Recovery(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) })) req := httptest.NewRequest("GET", "/", nil) rr := httptest.NewRecorder() handler.ServeHTTP(rr, req) if rr.Code != http.StatusOK { t.Errorf("expected 200, got %d", rr.Code) } } func TestRecovery_CatchesPanic(t *testing.T) { handler := middleware.Recovery(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { panic("test panic") })) req := httptest.NewRequest("GET", "/", nil) rr := httptest.NewRecorder() handler.ServeHTTP(rr, req) if rr.Code != http.StatusInternalServerError { t.Errorf("expected 500, got %d", rr.Code) } } func TestRecovery_CatchesPanicWithError(t *testing.T) { handler := middleware.Recovery(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { panic(42) })) req := httptest.NewRequest("GET", "/", nil) rr := httptest.NewRecorder() handler.ServeHTTP(rr, req) if rr.Code != http.StatusInternalServerError { t.Errorf("expected 500, got %d", rr.Code) } }