(t *testing.T)
| 72 | } |
| 73 | |
| 74 | func TestTemplateVersionsPromote(t *testing.T) { |
| 75 | t.Parallel() |
| 76 | |
| 77 | t.Run("PromoteVersion", func(t *testing.T) { |
| 78 | t.Parallel() |
| 79 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 80 | owner := coderdtest.CreateFirstUser(t, client) |
| 81 | |
| 82 | // Create a template with two versions |
| 83 | version1 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, completeWithAgent()) |
| 84 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version1.ID) |
| 85 | |
| 86 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version1.ID) |
| 87 | |
| 88 | version2 := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, completeWithAgent(), func(ctvr *codersdk.CreateTemplateVersionRequest) { |
| 89 | ctvr.TemplateID = template.ID |
| 90 | ctvr.Name = "2.0.0" |
| 91 | }) |
| 92 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version2.ID) |
| 93 | |
| 94 | // Ensure version1 is active |
| 95 | updatedTemplate, err := client.Template(context.Background(), template.ID) |
| 96 | assert.NoError(t, err) |
| 97 | assert.Equal(t, version1.ID, updatedTemplate.ActiveVersionID) |
| 98 | |
| 99 | args := []string{ |
| 100 | "templates", |
| 101 | "versions", |
| 102 | "promote", |
| 103 | "--template", template.Name, |
| 104 | "--template-version", version2.Name, |
| 105 | } |
| 106 | |
| 107 | inv, root := clitest.New(t, args...) |
| 108 | //nolint:gocritic // Creating a workspace for another user requires owner permissions. |
| 109 | clitest.SetupConfig(t, client, root) |
| 110 | errC := make(chan error) |
| 111 | go func() { |
| 112 | errC <- inv.Run() |
| 113 | }() |
| 114 | |
| 115 | require.NoError(t, <-errC) |
| 116 | |
| 117 | // Verify that version2 is now the active version |
| 118 | updatedTemplate, err = client.Template(context.Background(), template.ID) |
| 119 | require.NoError(t, err) |
| 120 | assert.Equal(t, version2.ID, updatedTemplate.ActiveVersionID) |
| 121 | }) |
| 122 | |
| 123 | t.Run("PromoteNonExistentVersion", func(t *testing.T) { |
| 124 | t.Parallel() |
| 125 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 126 | owner := coderdtest.CreateFirstUser(t, client) |
| 127 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 128 | |
| 129 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil) |
| 130 | _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 131 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID) |
nothing calls this directly
no test coverage detected