package middleware import ( "bytes" "log/slog" "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/require" ) func TestRecover_PanicReturns500(t *testing.T) { var buf bytes.Buffer log := slog.New(slog.NewJSONHandler(&buf, nil)) h := Recover(log)(http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) { panic("boom") })) rec := httptest.NewRecorder() h.ServeHTTP(rec, httptest.NewRequest("GET", "/", nil)) require.Equal(t, http.StatusInternalServerError, rec.Code) require.Contains(t, buf.String(), "boom") } func TestRecover_NoPanic_PassThrough(t *testing.T) { log := slog.New(slog.NewJSONHandler(&bytes.Buffer{}, nil)) h := Recover(log)(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) { w.WriteHeader(http.StatusNoContent) })) rec := httptest.NewRecorder() h.ServeHTTP(rec, httptest.NewRequest("GET", "/", nil)) require.Equal(t, http.StatusNoContent, rec.Code) }