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

Function TestServerSentEventSender

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

Source from the content-addressed store, hash-verified

447}
448
449func TestServerSentEventSender(t *testing.T) {
450 t.Parallel()
451
452 newBaseRequest := func(ctx context.Context) *http.Request {
453 url := "ws://www.fake-website.com/logs"
454 req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
455 require.NoError(t, err)
456 return req
457 }
458
459 newServerSentWriter := func(t *testing.T) mockServerSentWriter {
460 mockServer, mockClient := net.Pipe()
461 return mockServerSentWriter{
462 testContext: t,
463 serverRecorder: httptest.NewRecorder(),
464 clientConn: mockClient,
465 serverConn: mockServer,
466 buffer: &bytes.Buffer{},
467 }
468 }
469
470 t.Run("Mutates response headers to support SSE connections", func(t *testing.T) {
471 t.Parallel()
472
473 ctx := testutil.Context(t, testutil.WaitShort)
474 req := newBaseRequest(ctx)
475 writer := newServerSentWriter(t)
476 _, _, err := httpapi.ServerSentEventSender(writer, req)
477 require.NoError(t, err)
478
479 h := writer.Header()
480 require.Equal(t, h.Get("Content-Type"), "text/event-stream")
481 require.Equal(t, h.Get("Cache-Control"), "no-cache")
482 require.Equal(t, h.Get("Connection"), "keep-alive")
483 require.Equal(t, h.Get("X-Accel-Buffering"), "no")
484 })
485
486 t.Run("Returned callback can publish new event to SSE connection", func(t *testing.T) {
487 t.Parallel()
488
489 ctx := testutil.Context(t, testutil.WaitShort)
490 req := newBaseRequest(ctx)
491 writer := newServerSentWriter(t)
492 send, _, err := httpapi.ServerSentEventSender(writer, req)
493 require.NoError(t, err)
494
495 serverPayload := codersdk.ServerSentEvent{
496 Type: codersdk.ServerSentEventTypeData,
497 Data: "Blah",
498 }
499 err = send(serverPayload)
500 require.NoError(t, err)
501
502 clientBytes, err := io.ReadAll(writer.clientConn)
503 require.NoError(t, err)
504 require.Equal(
505 t,
506 string(clientBytes),

Callers

nothing calls this directly

Calls 11

ContextFunction · 0.92
ServerSentEventSenderFunction · 0.92
DurationMethod · 0.80
SetReadDeadlineMethod · 0.80
RunMethod · 0.65
GetMethod · 0.65
AddMethod · 0.65
ReadMethod · 0.65
HeaderMethod · 0.45
EqualMethod · 0.45
ReadAllMethod · 0.45

Tested by

no test coverage detected