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

Function TestUpdate

cli/update_test.go:22–198  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

20)
21
22func TestUpdate(t *testing.T) {
23 t.Parallel()
24
25 // Test that the function does not panic on missing arg.
26 t.Run("NoArgs", func(t *testing.T) {
27 t.Parallel()
28
29 inv, _ := clitest.New(t, "update")
30 err := inv.Run()
31 require.Error(t, err)
32 })
33
34 t.Run("OK", func(t *testing.T) {
35 t.Parallel()
36
37 // Given: a workspace exists on the latest template version.
38 client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
39 owner := coderdtest.CreateFirstUser(t, client)
40 member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
41 version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
42
43 coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID)
44 template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID)
45
46 ws := coderdtest.CreateWorkspace(t, member, template.ID, func(cwr *codersdk.CreateWorkspaceRequest) {
47 cwr.Name = "my-workspace"
48 })
49 require.False(t, ws.Outdated, "newly created workspace with active template version must not be outdated")
50
51 // Given: the template version is updated
52 version2 := coderdtest.UpdateTemplateVersion(t, client, owner.OrganizationID, &echo.Responses{
53 Parse: echo.ParseComplete,
54 ProvisionApply: echo.ApplyComplete,
55 ProvisionPlan: echo.PlanComplete,
56 }, template.ID)
57 _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version2.ID)
58
59 ctx := testutil.Context(t, testutil.WaitShort)
60 err := client.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{
61 ID: version2.ID,
62 })
63 require.NoError(t, err, "failed to update active template version")
64
65 // Then: the workspace is marked as 'outdated'
66 ws, err = member.WorkspaceByOwnerAndName(ctx, codersdk.Me, "my-workspace", codersdk.WorkspaceOptions{})
67 require.NoError(t, err, "member failed to get workspace they themselves own")
68 require.True(t, ws.Outdated, "workspace must be outdated after template version update")
69
70 // When: the workspace is updated
71 inv, root := clitest.New(t, "update", ws.Name)
72 clitest.SetupConfig(t, member, root)
73
74 err = inv.Run()
75 require.NoError(t, err, "update command failed")
76
77 // Then: the workspace is no longer 'outdated'
78 ws, err = member.WorkspaceByOwnerAndName(ctx, codersdk.Me, "my-workspace", codersdk.WorkspaceOptions{})
79 require.NoError(t, err, "member failed to get workspace they themselves own after update")

Callers

nothing calls this directly

Calls 15

NewFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
UpdateTemplateVersionFunction · 0.92
ContextFunction · 0.92
SetupConfigFunction · 0.92
MustTransitionWorkspaceFunction · 0.92

Tested by

no test coverage detected