MCPcopy Index your code
hub / github.com/coder/coder / TestOneWayWebSocketEventSender

Function TestOneWayWebSocketEventSender

coderd/httpapi/httpapi_test.go:196–411  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

194}
195
196func TestOneWayWebSocketEventSender(t *testing.T) {
197 t.Parallel()
198
199 newBaseRequest := func(ctx context.Context) *http.Request {
200 url := "ws://www.fake-website.com/logs"
201 req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
202 require.NoError(t, err)
203
204 h := req.Header
205 h.Add("Connection", "Upgrade")
206 h.Add("Upgrade", "websocket")
207 h.Add("Sec-WebSocket-Version", "13")
208 h.Add("Sec-WebSocket-Key", "dGhlIHNhbXBsZSBub25jZQ==") // Just need any string
209
210 return req
211 }
212
213 newOneWayWriter := func(t *testing.T) mockOneWaySocketWriter {
214 mockServer, mockClient := net.Pipe()
215 recorder := httptest.NewRecorder()
216
217 return mockOneWaySocketWriter{
218 testContext: t,
219 serverConn: mockServer,
220 clientConn: mockClient,
221 serverRecorder: recorder,
222 serverReadWriter: bufio.NewReadWriter(
223 bufio.NewReader(mockServer),
224 bufio.NewWriter(mockServer),
225 ),
226 }
227 }
228
229 t.Run("Produces error if the socket connection could not be established", func(t *testing.T) {
230 t.Parallel()
231
232 incorrectProtocols := []struct {
233 major int
234 minor int
235 proto string
236 }{
237 {0, 9, "HTTP/0.9"},
238 {1, 0, "HTTP/1.0"},
239 }
240 for _, p := range incorrectProtocols {
241 ctx := testutil.Context(t, testutil.WaitShort)
242 req := newBaseRequest(ctx)
243 req.ProtoMajor = p.major
244 req.ProtoMinor = p.minor
245 req.Proto = p.proto
246
247 writer := newOneWayWriter(t)
248 _, _, err := httpapi.OneWayWebSocketEventSender(slogtest.Make(t, nil))(writer, req)
249 require.ErrorContains(t, err, p.proto)
250 }
251 })
252
253 t.Run("Returned callback can publish new event to WebSocket connection", func(t *testing.T) {

Callers

nothing calls this directly

Calls 13

ContextFunction · 0.92
ErrMethod · 0.80
DurationMethod · 0.80
SetReadDeadlineMethod · 0.80
AddMethod · 0.65
RunMethod · 0.65
WriteMethod · 0.65
ReadMethod · 0.65
MarshalMethod · 0.45
ReadAllMethod · 0.45
ContainsMethod · 0.45

Tested by

no test coverage detected