(t *testing.T)
| 3752 | } |
| 3753 | |
| 3754 | func TestWorkspaceUpdateAutomaticUpdates_OK(t *testing.T) { |
| 3755 | t.Parallel() |
| 3756 | |
| 3757 | var ( |
| 3758 | auditor = audit.NewMock() |
| 3759 | adminClient = coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, Auditor: auditor}) |
| 3760 | admin = coderdtest.CreateFirstUser(t, adminClient) |
| 3761 | client, user = coderdtest.CreateAnotherUser(t, adminClient, admin.OrganizationID) |
| 3762 | version = coderdtest.CreateTemplateVersion(t, adminClient, admin.OrganizationID, nil) |
| 3763 | _ = coderdtest.AwaitTemplateVersionJobCompleted(t, adminClient, version.ID) |
| 3764 | project = coderdtest.CreateTemplate(t, adminClient, admin.OrganizationID, version.ID) |
| 3765 | workspace = coderdtest.CreateWorkspace(t, client, project.ID, func(cwr *codersdk.CreateWorkspaceRequest) { |
| 3766 | cwr.AutostartSchedule = nil |
| 3767 | cwr.TTLMillis = nil |
| 3768 | cwr.AutomaticUpdates = codersdk.AutomaticUpdatesNever |
| 3769 | }) |
| 3770 | ) |
| 3771 | |
| 3772 | // await job to ensure audit logs for workspace_build start are created |
| 3773 | _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID) |
| 3774 | |
| 3775 | // ensure test invariant: new workspaces have automatic updates set to never |
| 3776 | require.Equal(t, codersdk.AutomaticUpdatesNever, workspace.AutomaticUpdates, "expected newly-minted workspace to automatic updates set to never") |
| 3777 | |
| 3778 | ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) |
| 3779 | defer cancel() |
| 3780 | |
| 3781 | err := client.UpdateWorkspaceAutomaticUpdates(ctx, workspace.ID, codersdk.UpdateWorkspaceAutomaticUpdatesRequest{ |
| 3782 | AutomaticUpdates: codersdk.AutomaticUpdatesAlways, |
| 3783 | }) |
| 3784 | require.NoError(t, err) |
| 3785 | |
| 3786 | updated, err := client.Workspace(ctx, workspace.ID) |
| 3787 | require.NoError(t, err) |
| 3788 | require.Equal(t, codersdk.AutomaticUpdatesAlways, updated.AutomaticUpdates) |
| 3789 | |
| 3790 | require.Eventually(t, func() bool { |
| 3791 | var found bool |
| 3792 | for _, l := range auditor.AuditLogs() { |
| 3793 | if l.Action == database.AuditActionWrite && |
| 3794 | l.UserID == user.ID && |
| 3795 | l.ResourceID == workspace.ID { |
| 3796 | found = true |
| 3797 | break |
| 3798 | } |
| 3799 | } |
| 3800 | return found |
| 3801 | }, testutil.WaitShort, testutil.IntervalFast, "did not find expected audit log") |
| 3802 | } |
| 3803 | |
| 3804 | func TestUpdateWorkspaceAutomaticUpdates_NotFound(t *testing.T) { |
| 3805 | t.Parallel() |
nothing calls this directly
no test coverage detected