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

Function TestWorkspaceDormant

coderd/workspaces_test.go:4742–4865  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

4740}
4741
4742func TestWorkspaceDormant(t *testing.T) {
4743 t.Parallel()
4744
4745 t.Run("OK", func(t *testing.T) {
4746 t.Parallel()
4747 var (
4748 auditRecorder = audit.NewMock()
4749 client = coderdtest.New(t, &coderdtest.Options{
4750 IncludeProvisionerDaemon: true,
4751 Auditor: auditRecorder,
4752 })
4753 user = coderdtest.CreateFirstUser(t, client)
4754 version = coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, nil)
4755 _ = coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
4756 timeTilDormantAutoDelete = time.Minute
4757 )
4758
4759 template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID, func(ctr *codersdk.CreateTemplateRequest) {
4760 ctr.TimeTilDormantAutoDeleteMillis = ptr.Ref[int64](timeTilDormantAutoDelete.Milliseconds())
4761 })
4762 workspace := coderdtest.CreateWorkspace(t, client, template.ID)
4763 _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID)
4764
4765 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
4766 defer cancel()
4767
4768 lastUsedAt := workspace.LastUsedAt
4769 auditRecorder.ResetLogs()
4770 err := client.UpdateWorkspaceDormancy(ctx, workspace.ID, codersdk.UpdateWorkspaceDormancy{
4771 Dormant: true,
4772 })
4773 require.NoError(t, err)
4774 require.True(t, auditRecorder.Contains(t, database.AuditLog{
4775 Action: database.AuditActionWrite,
4776 ResourceType: database.ResourceTypeWorkspace,
4777 ResourceTarget: workspace.Name,
4778 }))
4779
4780 workspace = coderdtest.MustWorkspace(t, client, workspace.ID)
4781 require.NoError(t, err, "fetch provisioned workspace")
4782 // The template doesn't have a time_til_dormant_autodelete set so this should be nil.
4783 require.Nil(t, workspace.DeletingAt)
4784 require.NotNil(t, workspace.DormantAt)
4785 require.WithinRange(t, *workspace.DormantAt, dbtime.Now().Add(-time.Second*10), dbtime.Now())
4786 require.Equal(t, lastUsedAt, workspace.LastUsedAt)
4787
4788 workspace = coderdtest.MustWorkspace(t, client, workspace.ID)
4789 lastUsedAt = workspace.LastUsedAt
4790 err = client.UpdateWorkspaceDormancy(ctx, workspace.ID, codersdk.UpdateWorkspaceDormancy{
4791 Dormant: false,
4792 })
4793 require.NoError(t, err)
4794
4795 workspace, err = client.Workspace(ctx, workspace.ID)
4796 require.NoError(t, err, "fetch provisioned workspace")
4797 require.Nil(t, workspace.DormantAt)
4798 // The template doesn't have a time_til_dormant_autodelete set so this should be nil.
4799 require.Nil(t, workspace.DeletingAt)

Callers

nothing calls this directly

Calls 15

NewMockFunction · 0.92
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
CreateWorkspaceFunction · 0.92
MustWorkspaceFunction · 0.92
NowFunction · 0.92
MustTransitionWorkspaceFunction · 0.92
WorkspaceTransitionTypeAlias · 0.92

Tested by

no test coverage detected