(t *testing.T)
| 476 | } |
| 477 | |
| 478 | func TestWorkspaceAgentAppStatus(t *testing.T) { |
| 479 | t.Parallel() |
| 480 | client, db := coderdtest.NewWithDatabase(t, nil) |
| 481 | user := coderdtest.CreateFirstUser(t, client) |
| 482 | client, user2 := coderdtest.CreateAnotherUser(t, client, user.OrganizationID) |
| 483 | |
| 484 | r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{ |
| 485 | OrganizationID: user.OrganizationID, |
| 486 | OwnerID: user2.ID, |
| 487 | }).WithAgent(func(a []*proto.Agent) []*proto.Agent { |
| 488 | a[0].Apps = []*proto.App{ |
| 489 | { |
| 490 | Slug: "vscode", |
| 491 | }, |
| 492 | } |
| 493 | return a |
| 494 | }).Do() |
| 495 | |
| 496 | agentClient := agentsdk.New(client.URL, agentsdk.WithFixedToken(r.AgentToken)) |
| 497 | t.Run("Success", func(t *testing.T) { |
| 498 | t.Parallel() |
| 499 | ctx := testutil.Context(t, testutil.WaitShort) |
| 500 | err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{ |
| 501 | AppSlug: "vscode", |
| 502 | Message: "testing", |
| 503 | URI: "https://example.com", |
| 504 | State: codersdk.WorkspaceAppStatusStateComplete, |
| 505 | // Ensure deprecated fields are ignored. |
| 506 | Icon: "https://example.com/icon.png", |
| 507 | NeedsUserAttention: true, |
| 508 | }) |
| 509 | require.NoError(t, err) |
| 510 | |
| 511 | workspace, err := client.Workspace(ctx, r.Workspace.ID) |
| 512 | require.NoError(t, err) |
| 513 | agent, err := client.WorkspaceAgent(ctx, workspace.LatestBuild.Resources[0].Agents[0].ID) |
| 514 | require.NoError(t, err) |
| 515 | require.Len(t, agent.Apps[0].Statuses, 1) |
| 516 | // Deprecated fields should be ignored. |
| 517 | require.Empty(t, agent.Apps[0].Statuses[0].Icon) |
| 518 | require.False(t, agent.Apps[0].Statuses[0].NeedsUserAttention) |
| 519 | }) |
| 520 | |
| 521 | t.Run("FailUnknownApp", func(t *testing.T) { |
| 522 | t.Parallel() |
| 523 | ctx := testutil.Context(t, testutil.WaitShort) |
| 524 | err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{ |
| 525 | AppSlug: "unknown", |
| 526 | Message: "testing", |
| 527 | URI: "https://example.com", |
| 528 | State: codersdk.WorkspaceAppStatusStateComplete, |
| 529 | }) |
| 530 | require.ErrorContains(t, err, "No app found with slug") |
| 531 | var sdkErr *codersdk.Error |
| 532 | require.ErrorAs(t, err, &sdkErr) |
| 533 | require.Equal(t, http.StatusBadRequest, sdkErr.StatusCode()) |
| 534 | }) |
| 535 |
nothing calls this directly
no test coverage detected