package internal import ( "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/assert" ) func TestLogInterceptor(t *testing.T) { svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) defer svr.Close() req, err := http.NewRequest(http.MethodGet, svr.URL, nil) assert.Nil(t, err) req, handler := LogInterceptor(req) resp, err := http.DefaultClient.Do(req) handler(resp, err) assert.Nil(t, err) assert.Equal(t, http.StatusOK, resp.StatusCode) } func TestLogInterceptorServerError(t *testing.T) { svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) })) defer svr.Close() req, err := http.NewRequest(http.MethodGet, svr.URL, nil) assert.Nil(t, err) req, handler := LogInterceptor(req) resp, err := http.DefaultClient.Do(req) handler(resp, err) assert.Nil(t, err) assert.Equal(t, http.StatusInternalServerError, resp.StatusCode) } func TestLogInterceptorServerClosed(t *testing.T) { svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusInternalServerError) })) defer svr.Close() req, err := http.NewRequest(http.MethodGet, svr.URL, nil) assert.Nil(t, err) svr.Close() req, handler := LogInterceptor(req) resp, err := http.DefaultClient.Do(req) handler(resp, err) assert.NotNil(t, err) assert.Nil(t, resp) }