mirror of
https://github.com/coder/coder.git
synced 2026-06-03 04:58:23 +00:00
fix(coderd/httpapi): stop writing websocket frames to ResponseRecorder in test (#25284)
The `mockEventSenderWrite` function in `newOneWayWriter()` wrote WebSocket frame data to both the `net.Pipe` and the `httptest.ResponseRecorder`. After `websocket.Accept()` calls `WriteHeader(101)`, the recorder rejects body writes with `"response status code does not allow body"`. When `HeartbeatClose` sends a ping, the control frame flush routes through the recorder, producing an ERROR-level log that `slogtest` catches as a test failure. Removed the `recorder.Write(b)` call from the write function. The recorder is only needed for header/status inspection; WebSocket frame data should only go through the `net.Pipe`. Closes https://github.com/coder/internal/issues/1521 > 🤖 Generated by Coder Agents
This commit is contained in:
@@ -193,12 +193,6 @@ func (m mockOneWaySocketWriter) WriteHeader(code int) {
|
||||
m.serverRecorder.WriteHeader(code)
|
||||
}
|
||||
|
||||
type mockEventSenderWrite func(b []byte) (int, error)
|
||||
|
||||
func (w mockEventSenderWrite) Write(b []byte) (int, error) {
|
||||
return w(b)
|
||||
}
|
||||
|
||||
func TestOneWayWebSocketEventSender(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@@ -220,18 +214,6 @@ func TestOneWayWebSocketEventSender(t *testing.T) {
|
||||
mockServer, mockClient := net.Pipe()
|
||||
recorder := httptest.NewRecorder()
|
||||
|
||||
var write mockEventSenderWrite = func(b []byte) (int, error) {
|
||||
serverCount, err := mockServer.Write(b)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
recorderCount, err := recorder.Write(b)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return min(serverCount, recorderCount), nil
|
||||
}
|
||||
|
||||
return mockOneWaySocketWriter{
|
||||
testContext: t,
|
||||
serverConn: mockServer,
|
||||
@@ -239,7 +221,7 @@ func TestOneWayWebSocketEventSender(t *testing.T) {
|
||||
serverRecorder: recorder,
|
||||
serverReadWriter: bufio.NewReadWriter(
|
||||
bufio.NewReader(mockServer),
|
||||
bufio.NewWriter(write),
|
||||
bufio.NewWriter(mockServer),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user