4
4
"context"
5
5
"net/http"
6
6
"net/http/httptest"
7
+ "sync"
7
8
"testing"
8
9
"time"
9
10
@@ -95,7 +96,7 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
95
96
sink := & fakeSink {}
96
97
logger := slog .Make (sink )
97
98
logger = logger .Leveled (slog .LevelDebug )
98
-
99
+ wg := sync. WaitGroup {}
99
100
// Create a test handler to simulate a WebSocket connection
100
101
testHandler := http .HandlerFunc (func (rw http.ResponseWriter , r * http.Request ) {
101
102
conn , err := websocket .Accept (rw , r , nil )
@@ -105,6 +106,7 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
105
106
}
106
107
requestLgr := RequestLoggerFromContext (r .Context ())
107
108
requestLgr .WriteLog (r .Context (), http .StatusSwitchingProtocols )
109
+ wg .Done ()
108
110
defer conn .Close (websocket .StatusNormalClosure , "" )
109
111
110
112
// Send a couple of messages for testing
@@ -122,16 +124,16 @@ func TestLoggerMiddleware_WebSocket(t *testing.T) {
122
124
wrappedHandler .ServeHTTP (sw , r )
123
125
})
124
126
125
- // Create a test HTTP request
126
127
srv := httptest .NewServer (customHandler )
127
128
defer srv .Close ()
129
+ wg .Add (1 )
128
130
// nolint: bodyclose
129
131
conn , _ , err := websocket .Dial (ctx , srv .URL , nil )
130
132
if err != nil {
131
133
t .Fatalf ("failed to create WebSocket connection: %v" , err )
132
134
}
133
135
defer conn .Close (websocket .StatusNormalClosure , "" )
134
-
136
+ wg . Wait ()
135
137
if len (sink .entries ) != 1 {
136
138
t .Fatalf ("expected 1 log entry, got %d" , len (sink .entries ))
137
139
}
0 commit comments