Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit02afb0a

Browse files
committed
refactored tests to use a fakesink to verify the written messages
1 parente60d30f commit02afb0a

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

‎coderd/httpmw/logger_internal_test.go

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ import (
88
"time"
99

1010
"cdr.dev/slog"
11-
"cdr.dev/slog/sloggers/slogtest"
1211
"github.com/coder/coder/v2/coderd/tracing"
1312
)
1413

1514
funcTestRequestLogger_WriteLog(t*testing.T) {
1615
t.Parallel()
1716
ctx:=context.Background()
1817

19-
testLogger:=slogtest.Make(t,nil)
20-
21-
logCtx:=NewRequestLogger(testLogger,"GET",time.Now())
18+
sink:=&fakeSink{}
19+
logger:=slog.Make(sink)
20+
logger=logger.Leveled(slog.LevelDebug)
21+
logCtx:=NewRequestLogger(logger,"GET",time.Now())
2222

2323
// Add custom fields
2424
logCtx.WithFields(
@@ -28,24 +28,32 @@ func TestRequestLogger_WriteLog(t *testing.T) {
2828
// Write log for 200 status
2929
logCtx.WriteLog(ctx,http.StatusOK)
3030

31-
iflogCtx!=nil {
32-
requestCtxLog,ok:=logCtx.(*RequestContextLogger)
33-
ifok&&!requestCtxLog.written {
34-
t.Error("expected log to be written once")
35-
}
31+
iflen(sink.entries)!=1 {
32+
t.Fatalf("expected 1 log entry, got %d",len(sink.entries))
33+
}
34+
35+
ifsink.entries[0].Message!="GET" {
36+
t.Errorf("expected log message to be 'GET', got '%s'",sink.entries[0].Message)
37+
}
38+
39+
ifsink.entries[0].Fields[0].Value!="custom_value" {
40+
t.Errorf("expected a custom_field with value custom_value, got '%s'",sink.entries[0].Fields[0].Value)
3641
}
3742

3843
// Attempt to write again (should be skipped).
39-
// If the error log entry gets written,
40-
// slogtest will fail the test.
4144
logCtx.WriteLog(ctx,http.StatusInternalServerError)
45+
46+
iflen(sink.entries)!=1 {
47+
t.Fatalf("expected 1 log entry after second write, got %d",len(sink.entries))
48+
}
4249
}
4350

4451
funcTestLoggerMiddleware(t*testing.T) {
4552
t.Parallel()
4653

47-
// Create a test logger
48-
testLogger:=slogtest.Make(t,nil)
54+
sink:=&fakeSink{}
55+
logger:=slog.Make(sink)
56+
logger=logger.Leveled(slog.LevelDebug)
4957

5058
// Create a test handler to simulate an HTTP request
5159
testHandler:=http.HandlerFunc(func(rw http.ResponseWriter,r*http.Request) {
@@ -54,7 +62,7 @@ func TestLoggerMiddleware(t *testing.T) {
5462
})
5563

5664
// Wrap the test handler with the Logger middleware
57-
loggerMiddleware:=Logger(testLogger)
65+
loggerMiddleware:=Logger(logger)
5866
wrappedHandler:=loggerMiddleware(testHandler)
5967

6068
// Create a test HTTP request
@@ -68,12 +76,21 @@ func TestLoggerMiddleware(t *testing.T) {
6876
// Serve the request
6977
wrappedHandler.ServeHTTP(sw,req)
7078

71-
logCtx:=RequestLoggerFromContext(context.Background())
72-
// Verify that the log was written
73-
iflogCtx!=nil {
74-
requestCtxLog,ok:=logCtx.(*RequestContextLogger)
75-
ifok&&!requestCtxLog.written {
76-
t.Error("expected log to be written once")
77-
}
79+
iflen(sink.entries)!=1 {
80+
t.Fatalf("expected 1 log entry, got %d",len(sink.entries))
7881
}
82+
83+
ifsink.entries[0].Message!="GET" {
84+
t.Errorf("expected log message to be 'GET', got '%s'",sink.entries[0].Message)
85+
}
86+
}
87+
88+
typefakeSinkstruct {
89+
entries []slog.SinkEntry
7990
}
91+
92+
func (s*fakeSink)LogEntry(_ context.Context,e slog.SinkEntry) {
93+
s.entries=append(s.entries,e)
94+
}
95+
96+
func (*fakeSink)Sync() {}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp