@@ -52,6 +52,9 @@ func TestLoggerMiddleware_SingleRequest(t *testing.T) {
52
52
logger := slog .Make (sink )
53
53
logger = logger .Leveled (slog .LevelDebug )
54
54
55
+ ctx ,cancel := context .WithTimeout (context .Background (),testutil .WaitShort )
56
+ defer cancel ()
57
+
55
58
// Create a test handler to simulate an HTTP request
56
59
testHandler := http .HandlerFunc (func (rw http.ResponseWriter ,r * http.Request ) {
57
60
rw .WriteHeader (http .StatusOK )
@@ -63,7 +66,7 @@ func TestLoggerMiddleware_SingleRequest(t *testing.T) {
63
66
wrappedHandler := loggerMiddleware (testHandler )
64
67
65
68
// Create a test HTTP request
66
- req ,err := http .NewRequestWithContext (context . Background () ,http .MethodGet ,"/test-path" ,nil )
69
+ req ,err := http .NewRequestWithContext (ctx ,http .MethodGet ,"/test-path" ,nil )
67
70
if err != nil {
68
71
t .Fatalf ("failed to create request: %v" ,err )
69
72
}
@@ -76,6 +79,24 @@ func TestLoggerMiddleware_SingleRequest(t *testing.T) {
76
79
require .Len (t ,sink .entries ,1 ,"log was written twice" )
77
80
78
81
require .Equal (t ,sink .entries [0 ].Message ,"GET" ,"log message should be GET" )
82
+
83
+ fieldsMap := make (map [string ]interface {})
84
+ for _ ,field := range sink .entries [0 ].Fields {
85
+ fieldsMap [field .Name ]= field .Value
86
+ }
87
+
88
+ // Check that the log contains the expected fields
89
+ requiredFields := []string {"host" ,"path" ,"proto" ,"remote_addr" ,"start" ,"took" ,"status_code" ,"latency_ms" }
90
+ for _ ,field := range requiredFields {
91
+ _ ,exists := fieldsMap [field ]
92
+ require .True (t ,exists ,"field %q is missing in log fields" ,field )
93
+ }
94
+
95
+ require .Len (t ,sink .entries [0 ].Fields ,len (requiredFields ),"log should contain only the required fields" )
96
+
97
+ // Check value of the status code
98
+ require .Equal (t ,fieldsMap ["status_code" ],http .StatusOK ,"status_code should be 200" )
99
+
79
100
}
80
101
81
102
func TestLoggerMiddleware_WebSocket (t * testing.T ) {