From 581f3bdd14bbdea7ea5c016bbdd672643eed2b2e Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Thu, 14 May 2026 09:15:14 +0100 Subject: [PATCH] fix(coderd/httpapi): stop writing websocket frames to ResponseRecorder in test (#25284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- coderd/httpapi/httpapi_test.go | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/coderd/httpapi/httpapi_test.go b/coderd/httpapi/httpapi_test.go index 0fc6df8e8b..bc5bd52a03 100644 --- a/coderd/httpapi/httpapi_test.go +++ b/coderd/httpapi/httpapi_test.go @@ -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), ), } }