package chizap_test import ( "net/http" "net/http/httptest" "testing" "github.com/Kichiyaki/chizap" "github.com/go-chi/chi/v5" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.uber.org/zap" "go.uber.org/zap/zaptest/observer" ) func TestLogger(t *testing.T) { t.Parallel() logger, obs := newLogger() router := chi.NewRouter() router.Use(chizap.Logger(logger)) router.Get("/info", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusOK) }) router.Get("/warn", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusBadRequest) }) router.Get("/error", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) }) res1 := httptest.NewRecorder() req1, err := http.NewRequest("GET", "/info?test=true", nil) assert.NoError(t, err) router.ServeHTTP(res1, req1) entries1 := obs.TakeAll() require.Len(t, entries1, 1) assert.Equal(t, "/info", entries1[0].Message) } func newLogger() (*zap.Logger, *observer.ObservedLogs) { core, obs := observer.New(zap.NewAtomicLevelAt(zap.InfoLevel)) logger := zap.New(core) return logger, obs }