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

Function TestWebsocketDialer_ResumeTokenFailure

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

Source from the content-addressed store, hash-verified

173}
174
175func TestWebsocketDialer_ResumeTokenFailure(t *testing.T) {
176 t.Parallel()
177 ctx := testutil.Context(t, testutil.WaitShort)
178 logger := slogtest.Make(t, &slogtest.Options{
179 IgnoreErrors: true,
180 }).Leveled(slog.LevelDebug)
181
182 fTokenProv := newFakeTokenController(ctx, t)
183 fCoord := tailnettest.NewFakeCoordinator()
184 var coord tailnet.Coordinator = fCoord
185 coordPtr := atomic.Pointer[tailnet.Coordinator]{}
186 coordPtr.Store(&coord)
187
188 svc, err := tailnet.NewClientService(tailnet.ClientServiceOptions{
189 Logger: logger,
190 CoordPtr: &coordPtr,
191 DERPMapUpdateFrequency: time.Hour,
192 DERPMapFn: func() *tailcfg.DERPMap { return &tailcfg.DERPMap{} },
193 })
194 require.NoError(t, err)
195
196 dialTokens := make(chan string, 1)
197 wsErr := make(chan error, 1)
198 svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
199 resumeToken := r.URL.Query().Get("resume_token")
200 select {
201 case <-ctx.Done():
202 t.Error("timed out sending token")
203 case dialTokens <- resumeToken:
204 // OK
205 }
206
207 if resumeToken != "" {
208 httpapi.Write(ctx, w, http.StatusUnauthorized, codersdk.Response{
209 Message: workspacesdk.CoordinateAPIInvalidResumeToken,
210 Validations: []codersdk.ValidationError{
211 {Field: "resume_token", Detail: workspacesdk.CoordinateAPIInvalidResumeToken},
212 },
213 })
214 return
215 }
216 sws, err := websocket.Accept(w, r, nil)
217 if !assert.NoError(t, err) {
218 return
219 }
220 wsCtx, nc := codersdk.WebsocketNetConn(ctx, sws, websocket.MessageBinary)
221 // streamID can be empty because we don't call RPCs in this test.
222 wsErr <- svc.ServeConnV2(wsCtx, nc, tailnet.StreamID{})
223 }))
224 defer svr.Close()
225 svrURL, err := url.Parse(svr.URL)
226 require.NoError(t, err)
227
228 uut := workspacesdk.NewWebsocketDialer(logger, svrURL, &websocket.DialOptions{})
229
230 errCh := make(chan error, 1)
231 go func() {
232 _, err := uut.Dial(ctx, fTokenProv)

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
WriteFunction · 0.92
WebsocketNetConnFunction · 0.92
NewWebsocketDialerFunction · 0.92
TryReceiveFunction · 0.92
newFakeTokenControllerFunction · 0.85
GetMethod · 0.65

Tested by

no test coverage detected