To gitea and beyond, let's go(-yco)
This commit is contained in:
57
internal/middleware/logging_test.go
Normal file
57
internal/middleware/logging_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestLoggingRecordsStatusAndLogs(t *testing.T) {
|
||||
originalOutput := log.Writer()
|
||||
defer log.SetOutput(originalOutput)
|
||||
|
||||
var buf bytes.Buffer
|
||||
log.SetOutput(&buf)
|
||||
|
||||
handler := Logging(true)(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
w.WriteHeader(http.StatusCreated)
|
||||
_, _ = w.Write([]byte("ok"))
|
||||
}))
|
||||
|
||||
recorder := httptest.NewRecorder()
|
||||
request := httptest.NewRequest(http.MethodGet, "/logging-test", nil)
|
||||
request.Header.Set("User-Agent", "test-agent")
|
||||
|
||||
handler.ServeHTTP(recorder, request)
|
||||
|
||||
if recorder.Result().StatusCode != http.StatusCreated {
|
||||
t.Fatalf("expected status 201, got %d", recorder.Result().StatusCode)
|
||||
}
|
||||
|
||||
logLine := buf.String()
|
||||
if !strings.Contains(logLine, "GET /logging-test 201") {
|
||||
t.Fatalf("expected log line to contain method, path and status, got %q", logLine)
|
||||
}
|
||||
|
||||
if !strings.Contains(logLine, "test-agent") {
|
||||
t.Fatalf("expected log line to contain user agent, got %q", logLine)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResponseWriterWriteHeaderStoresStatus(t *testing.T) {
|
||||
recorder := httptest.NewRecorder()
|
||||
wrapped := &responseWriter{ResponseWriter: recorder, statusCode: http.StatusOK}
|
||||
|
||||
wrapped.WriteHeader(http.StatusAccepted)
|
||||
|
||||
if wrapped.statusCode != http.StatusAccepted {
|
||||
t.Fatalf("expected stored status 202, got %d", wrapped.statusCode)
|
||||
}
|
||||
|
||||
if recorder.Result().StatusCode != http.StatusAccepted {
|
||||
t.Fatalf("expected underlying writer to receive 202, got %d", recorder.Result().StatusCode)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user