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

Function TestWebsocketDialer_NoTokenController

codersdk/workspacesdk/dialer_test.go:114–173  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

112}
113
114func TestWebsocketDialer_NoTokenController(t *testing.T) {
115 t.Parallel()
116 ctx := testutil.Context(t, testutil.WaitShort)
117 logger := slogtest.Make(t, &slogtest.Options{
118 IgnoreErrors: true,
119 }).Leveled(slog.LevelDebug)
120
121 fCoord := tailnettest.NewFakeCoordinator()
122 var coord tailnet.Coordinator = fCoord
123 coordPtr := atomic.Pointer[tailnet.Coordinator]{}
124 coordPtr.Store(&coord)
125
126 svc, err := tailnet.NewClientService(tailnet.ClientServiceOptions{
127 Logger: logger,
128 CoordPtr: &coordPtr,
129 DERPMapUpdateFrequency: time.Hour,
130 DERPMapFn: func() *tailcfg.DERPMap { return &tailcfg.DERPMap{} },
131 })
132 require.NoError(t, err)
133
134 dialTokens := make(chan string, 1)
135 wsErr := make(chan error, 1)
136 svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
137 select {
138 case <-ctx.Done():
139 t.Error("timed out sending token")
140 case dialTokens <- r.URL.Query().Get("resume_token"):
141 // OK
142 }
143
144 sws, err := websocket.Accept(w, r, nil)
145 if !assert.NoError(t, err) {
146 return
147 }
148 wsCtx, nc := codersdk.WebsocketNetConn(ctx, sws, websocket.MessageBinary)
149 // streamID can be empty because we don't call RPCs in this test.
150 wsErr <- svc.ServeConnV2(wsCtx, nc, tailnet.StreamID{})
151 }))
152 defer svr.Close()
153 svrURL, err := url.Parse(svr.URL)
154 require.NoError(t, err)
155
156 uut := workspacesdk.NewWebsocketDialer(logger, svrURL, &websocket.DialOptions{})
157
158 clientCh := make(chan tailnet.ControlProtocolClients, 1)
159 go func() {
160 clients, err := uut.Dial(ctx, nil)
161 assert.NoError(t, err)
162 clientCh <- clients
163 }()
164
165 gotToken := <-dialTokens
166 require.Equal(t, "", gotToken)
167
168 clients := testutil.TryReceive(ctx, t, clientCh)
169 clients.Closer.Close()
170
171 err = testutil.TryReceive(ctx, t, wsErr)

Callers

nothing calls this directly

Calls 15

ServeConnV2Method · 0.95
CloseMethod · 0.95
DialMethod · 0.95
ContextFunction · 0.92
NewFakeCoordinatorFunction · 0.92
NewClientServiceFunction · 0.92
WebsocketNetConnFunction · 0.92
NewWebsocketDialerFunction · 0.92
TryReceiveFunction · 0.92
GetMethod · 0.65
ParseMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected