8000 added test for an http request · coder/coder@30bb53d · GitHub
[go: up one dir, main page]

Skip to content

Commit 30bb53d

Browse files
committed
added test for an http request
1 parent 5a0fa05 commit 30bb53d

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

coderd/httpmw/logger_test.go

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,22 @@ package httpmw
33
import (
44
"context"
55
"net/http"
6+
"net/http/httptest"
67
"testing"
78
"time"
89

910
"cdr.dev/slog"
1011
"cdr.dev/slog/sloggers/slogtest"
12+
"github.com/coder/coder/v2/coderd/tracing"
1113
)
1214

1315
func TestRequestLoggerContext_WriteLog(t *testing.T) {
1416
t.Parallel()
1517
ctx := context.Background()
1618

1719
testLogger := slogtest.Make(t, nil)
18-
startTime := time.Now()
1920

20-
logCtx := NewRequestLoggerContext(testLogger, "GET", startTime)
21+
logCtx := NewRequestLoggerContext(testLogger, "GET", time.Now())
2122

2223
// Add custom fields
2324
logCtx.WithFields(
@@ -35,3 +36,37 @@ func TestRequestLoggerContext_WriteLog(t *testing.T) {
3536
// slogtest will fail the test.
3637
logCtx.WriteLog(ctx, http.StatusInternalServerError)
3738
}
39+
40+
func TestLoggerMiddleware(t *testing.T) {
41+
t.Parallel()
42+
43+
// Create a test logger
44+
testLogger := slogtest.Make(t, nil)
45+
46+
// Create a test handler to simulate an HTTP request
47+
testHandler := http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
48+
rw.WriteHeader(http.StatusOK)
49+
_, _ = rw.Write([]byte("OK"))
50+
})
51+
52+
// Wrap the test handler with the Logger middleware
53+
loggerMiddleware := Logger(testLogger)
54+
wrappedHandler := loggerMiddleware(testHandler)
55+
56+
// Create a test HTTP request
57+
req, err := http.NewRequestWithContext(context.Background(), http.MethodGet, "/test-path", nil)
58+
if err != nil {
59+
t.Fatalf("failed to create request: %v", err)
60+
}
61+
62+
sw := &tracing.StatusWriter{ResponseWriter: httptest.NewRecorder()}
63+
64+
// Serve the request
65+
wrappedHandler.ServeHTTP(sw, req)
66+
67+
logCtx := RequestLoggerFromContext(context.Background())
68+
// Verify that the log was written
69+
if logCtx != nil && !logCtx.written {
70+
t.Error("expected log to be written exactly once")
71+
}
72+
}

0 commit comments

Comments
 (0)
0