Skip to content

Commit e7d8359

Browse files
committed
Add unit test to prevent workspace create on archived version
1 parent 105f8c8 commit e7d8359

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

cli/templateversionarchive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func (r *RootCmd) archiveTemplateVersions() *clibase.Cmd {
101101
client := new(codersdk.Client)
102102
cmd := &clibase.Cmd{
103103
Use: "archive [template-name...] ",
104-
Short: "Archive unused failed template versions from a given template(s)",
104+
Short: "Archive unused or failed template versions from a given template(s)",
105105
Middleware: clibase.Chain(
106106
r.InitClient(client),
107107
),

coderd/workspaces_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,34 @@ func TestWorkspace(t *testing.T) {
309309
assert.NotEmpty(t, agent2.Health.Reason)
310310
})
311311
})
312+
313+
t.Run("Archived", func(t *testing.T) {
314+
t.Parallel()
315+
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
316+
owner := coderdtest.CreateFirstUser(t, ownerClient)
317+
318+
client, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
319+
320+
active := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil)
321+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, active.ID)
322+
template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, active.ID)
323+
// We need another version because the active template version cannot be
324+
// archived.
325+
version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil, func(request *codersdk.CreateTemplateVersionRequest) {
326+
request.TemplateID = template.ID
327+
})
328+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
329+
330+
err := client.SetArchiveTemplateVersion(ctx, version.ID, true)
331+
require.NoError(t, err, "archive version")
332+
333+
_, err = client.CreateWorkspace(ctx, owner.OrganizationID, codersdk.Me, codersdk.CreateWorkspaceRequest{
334+
TemplateVersionID: version.ID,
335+
Name: "testworkspace",
336+
})
337+
require.Error(t, err, "create workspace with archived version")
338+
require.ErrorContains(t, err, "Archived template versions cannot")
339+
})
312340
}
313341

314342
func TestAdminViewAllWorkspaces(t *testing.T) {

0 commit comments

Comments
 (0)