Skip to content

Commit 27818d2

Browse files
committed
refactor: clean up tests
1 parent abb4566 commit 27818d2

File tree

1 file changed

+23
-27
lines changed

1 file changed

+23
-27
lines changed

coderd/httpapi/httpapi_test.go

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"context"
77
"encoding/json"
88
"fmt"
9-
"io"
109
"net"
1110
"net/http"
1211
"net/http/httptest"
@@ -162,16 +161,17 @@ func TestWebsocketCloseMsg(t *testing.T) {
162161

163162
type mockHijacker struct {
164163
http.ResponseWriter
165-
connection net.Conn
164+
serverConn net.Conn
165+
clientConn net.Conn
166166
rw *bufio.ReadWriter
167167
}
168168

169-
func (mh mockHijacker) Hijack() (net.Conn, *bufio.ReadWriter, error) {
170-
return mh.connection, mh.rw, nil
169+
func (m mockHijacker) Hijack() (net.Conn, *bufio.ReadWriter, error) {
170+
return m.serverConn, m.rw, nil
171171
}
172172

173-
func (mh mockHijacker) Flush() {
174-
if f, ok := mh.ResponseWriter.(http.Flusher); ok {
173+
func (m mockHijacker) Flush() {
174+
if f, ok := m.ResponseWriter.(http.Flusher); ok {
175175
f.Flush()
176176
}
177177
}
@@ -184,32 +184,29 @@ func TestOneWayWebSocket(t *testing.T) {
184184
ctx := testutil.Context(t, testutil.WaitShort)
185185
req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
186186
require.NoError(t, err)
187-
req.Header = http.Header{
188-
"Connection": {"Upgrade"},
189-
"Upgrade": {"websocket"},
190-
"Sec-WebSocket-Version": {"13"},
191-
"Sec-WebSocket-Key": {"dGhlIHNhbXBsZSBub25jZQ=="},
192-
}
193-
// Todo: Figure out why headers are missing without these calls
194-
req.Header.Add("Sec-WebSocket-Version", "13")
195-
req.Header.Add("Sec-WebSocket-Key", "dGhlIHNhbXBsZSBub25jZQ==")
187+
188+
h := req.Header
189+
h.Add("Connection", "Upgrade")
190+
h.Add("Upgrade", "websocket")
191+
h.Add("Sec-WebSocket-Version", "13")
192+
h.Add("Sec-WebSocket-Key", "dGhlIHNhbXBsZSBub25jZQ==")
196193

197194
return req
198195
}
199196

200-
wrapWriter := func(rw http.ResponseWriter, r io.Reader) http.ResponseWriter {
201-
server, _ := net.Pipe()
202-
reader := bufio.NewReader(r)
203-
writer := bufio.NewWriter(rw)
197+
newMockHijacker := func() mockHijacker {
198+
server, client := net.Pipe()
199+
reader := bufio.NewReader(strings.NewReader(""))
200+
recorder := httptest.NewRecorder()
201+
writer := bufio.NewWriter(recorder)
204202
readWriter := bufio.NewReadWriter(reader, writer)
205203

206-
hijacker := mockHijacker{
207-
connection: server,
208-
ResponseWriter: rw,
204+
return mockHijacker{
205+
serverConn: server,
206+
clientConn: client,
207+
ResponseWriter: recorder,
209208
rw: readWriter,
210209
}
211-
212-
return hijacker
213210
}
214211

215212
t.Run("Produces an error if the socket connection could not be established", func(t *testing.T) {
@@ -237,10 +234,9 @@ func TestOneWayWebSocket(t *testing.T) {
237234
t.Run("Returned callback can publish a new event to the WebSocket connection", func(t *testing.T) {
238235
t.Parallel()
239236

240-
recorder := httptest.NewRecorder()
241-
writer := wrapWriter(recorder, strings.NewReader(""))
237+
mock := newMockHijacker()
242238
send, _, err := httpapi.OneWayWebSocket[codersdk.ServerSentEvent](
243-
writer,
239+
mock,
244240
createBaseRequest(t),
245241
)
246242
require.NoError(t, err)

0 commit comments

Comments
 (0)