(t *testing.T)
| 311 | } |
| 312 | |
| 313 | func TestWebsocketDialer_UplevelVersion(t *testing.T) { |
| 314 | t.Parallel() |
| 315 | ctx := testutil.Context(t, testutil.WaitShort) |
| 316 | logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: true}).Leveled(slog.LevelDebug) |
| 317 | |
| 318 | svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { |
| 319 | sVer := apiversion.New(2, 2) |
| 320 | |
| 321 | // the following matches what Coderd does; |
| 322 | // c.f. coderd/workspaceagents.go: workspaceAgentClientCoordinate |
| 323 | cVer := r.URL.Query().Get("version") |
| 324 | if err := sVer.Validate(cVer); err != nil { |
| 325 | httpapi.Write(ctx, w, http.StatusBadRequest, codersdk.Response{ |
| 326 | Message: workspacesdk.AgentAPIMismatchMessage, |
| 327 | Validations: []codersdk.ValidationError{ |
| 328 | {Field: "version", Detail: err.Error()}, |
| 329 | }, |
| 330 | }) |
| 331 | return |
| 332 | } |
| 333 | })) |
| 334 | svrURL, err := url.Parse(svr.URL) |
| 335 | require.NoError(t, err) |
| 336 | |
| 337 | uut := workspacesdk.NewWebsocketDialer( |
| 338 | logger, svrURL, &websocket.DialOptions{}, |
| 339 | workspacesdk.WithWorkspaceUpdates(&tailnetproto.WorkspaceUpdatesRequest{}), |
| 340 | ) |
| 341 | |
| 342 | errCh := make(chan error, 1) |
| 343 | go func() { |
| 344 | _, err := uut.Dial(ctx, nil) |
| 345 | errCh <- err |
| 346 | }() |
| 347 | |
| 348 | err = testutil.TryReceive(ctx, t, errCh) |
| 349 | var sdkErr *codersdk.Error |
| 350 | require.ErrorAs(t, err, &sdkErr) |
| 351 | require.Equal(t, http.StatusBadRequest, sdkErr.StatusCode()) |
| 352 | require.Equal(t, workspacesdk.AgentAPIMismatchMessage, sdkErr.Message) |
| 353 | require.NotEmpty(t, sdkErr.Helper) |
| 354 | } |
| 355 | |
| 356 | func TestWebsocketDialer_WorkspaceUpdates(t *testing.T) { |
| 357 | t.Parallel() |
nothing calls this directly
no test coverage detected