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

Function TestWorkspaceAgentAppStatus

coderd/workspaceagents_test.go:478–565  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

476}
477
478func 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

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
NewWithDatabaseFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
WorkspaceBuildFunction · 0.92
NewFunction · 0.92
WithFixedTokenFunction · 0.92
ContextFunction · 0.92
WithAgentMethod · 0.80
PatchAppStatusMethod · 0.80
WorkspaceMethod · 0.80
WorkspaceAgentMethod · 0.80

Tested by

no test coverage detected