(t *testing.T)
| 28 | ) |
| 29 | |
| 30 | func TestDelete(t *testing.T) { |
| 31 | t.Parallel() |
| 32 | t.Run("WithParameter", func(t *testing.T) { |
| 33 | t.Parallel() |
| 34 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 35 | owner := coderdtest.CreateFirstUser(t, client) |
| 36 | member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID) |
| 37 | version := coderdtest.CreateTemplateVersion(t, client, owner.OrganizationID, nil) |
| 38 | coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) |
| 39 | template := coderdtest.CreateTemplate(t, client, owner.OrganizationID, version.ID) |
| 40 | workspace := coderdtest.CreateWorkspace(t, member, template.ID) |
| 41 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID) |
| 42 | inv, root := clitest.New(t, "delete", workspace.Name, "-y") |
| 43 | clitest.SetupConfig(t, member, root) |
| 44 | doneChan := make(chan struct{}) |
| 45 | pty := ptytest.New(t).Attach(inv) |
| 46 | go func() { |
| 47 | defer close(doneChan) |
| 48 | err := inv.Run() |
| 49 | // When running with the race detector on, we sometimes get an EOF. |
| 50 | if err != nil { |
| 51 | assert.ErrorIs(t, err, io.EOF) |
| 52 | } |
| 53 | }() |
| 54 | pty.ExpectMatch("has been deleted") |
| 55 | <-doneChan |
| 56 | }) |
| 57 | |
| 58 | t.Run("Orphan", func(t *testing.T) { |
| 59 | t.Parallel() |
| 60 | client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true}) |
| 61 | owner := coderdtest.CreateFirstUser(t, client) |
| 62 | templateAdmin, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID, rbac.RoleTemplateAdmin()) |
| 63 | version := coderdtest.CreateTemplateVersion(t, templateAdmin, owner.OrganizationID, nil) |
| 64 | coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID) |
| 65 | template := coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID) |
| 66 | workspace := coderdtest.CreateWorkspace(t, templateAdmin, template.ID) |
| 67 | coderdtest.AwaitWorkspaceBuildJobCompleted(t, templateAdmin, workspace.LatestBuild.ID) |
| 68 | |
| 69 | ctx := testutil.Context(t, testutil.WaitShort) |
| 70 | inv, root := clitest.New(t, "delete", workspace.Name, "-y", "--orphan") |
| 71 | clitest.SetupConfig(t, templateAdmin, root) |
| 72 | |
| 73 | doneChan := make(chan struct{}) |
| 74 | pty := ptytest.New(t).Attach(inv) |
| 75 | inv.Stderr = pty.Output() |
| 76 | go func() { |
| 77 | defer close(doneChan) |
| 78 | err := inv.WithContext(ctx).Run() |
| 79 | // When running with the race detector on, we sometimes get an EOF. |
| 80 | if err != nil { |
| 81 | assert.ErrorIs(t, err, io.EOF) |
| 82 | } |
| 83 | }() |
| 84 | pty.ExpectMatch("has been deleted") |
| 85 | testutil.TryReceive(ctx, t, doneChan) |
| 86 | |
| 87 | _, err := client.Workspace(ctx, workspace.ID) |
nothing calls this directly
no test coverage detected