TestStart also tests restart since the tests are virtually identical.
(t *testing.T)
| 19 | |
| 20 | // TestStart also tests restart since the tests are virtually identical. |
| 21 | func TestStart(t *testing.T) { |
| 22 | t.Parallel() |
| 23 | |
| 24 | t.Run("RequireActiveVersion", func(t *testing.T) { |
| 25 | t.Parallel() |
| 26 | |
| 27 | ctx := testutil.Context(t, testutil.WaitMedium) |
| 28 | ownerClient, owner := coderdenttest.New(t, &coderdenttest.Options{ |
| 29 | Options: &coderdtest.Options{ |
| 30 | IncludeProvisionerDaemon: true, |
| 31 | }, |
| 32 | LicenseOptions: &coderdenttest.LicenseOptions{ |
| 33 | Features: license.Features{ |
| 34 | codersdk.FeatureAccessControl: 1, |
| 35 | codersdk.FeatureTemplateRBAC: 1, |
| 36 | codersdk.FeatureAdvancedTemplateScheduling: 1, |
| 37 | }, |
| 38 | }, |
| 39 | }) |
| 40 | templateAdminClient, templateAdmin := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin()) |
| 41 | |
| 42 | // Create an initial version. |
| 43 | oldVersion := coderdtest.CreateTemplateVersion(t, templateAdminClient, owner.OrganizationID, nil) |
| 44 | // Create a template that mandates the promoted version. |
| 45 | // This should be enforced for everyone except template admins. |
| 46 | template := coderdtest.CreateTemplate(t, templateAdminClient, owner.OrganizationID, oldVersion.ID) |
| 47 | coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdminClient, oldVersion.ID) |
| 48 | require.Equal(t, oldVersion.ID, template.ActiveVersionID) |
| 49 | template = coderdtest.UpdateTemplateMeta(t, templateAdminClient, template.ID, codersdk.UpdateTemplateMeta{ |
| 50 | RequireActiveVersion: ptr.Ref(true), |
| 51 | }) |
| 52 | require.True(t, template.RequireActiveVersion) |
| 53 | |
| 54 | // Create a new version that we will promote. |
| 55 | activeVersion := coderdtest.CreateTemplateVersion(t, templateAdminClient, owner.OrganizationID, nil, func(ctvr *codersdk.CreateTemplateVersionRequest) { |
| 56 | ctvr.TemplateID = template.ID |
| 57 | }) |
| 58 | coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdminClient, activeVersion.ID) |
| 59 | err := templateAdminClient.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{ |
| 60 | ID: activeVersion.ID, |
| 61 | }) |
| 62 | require.NoError(t, err) |
| 63 | |
| 64 | templateACLAdminClient, templateACLAdmin := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID) |
| 65 | templateGroupACLAdminClient, templateGroupACLAdmin := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID) |
| 66 | memberClient, member := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID) |
| 67 | |
| 68 | // Create a group so we can also test group template admin ownership. |
| 69 | // Add the user who gains template admin via group membership. |
| 70 | group := coderdtest.CreateGroup(t, ownerClient, owner.OrganizationID, "test", templateGroupACLAdmin) |
| 71 | |
| 72 | // Update the template for both users and groups. |
| 73 | err = ownerClient.UpdateTemplateACL(ctx, template.ID, codersdk.UpdateTemplateACL{ |
| 74 | UserPerms: map[string]codersdk.TemplateRole{ |
| 75 | templateACLAdmin.ID.String(): codersdk.TemplateRoleAdmin, |
| 76 | }, |
| 77 | GroupPerms: map[string]codersdk.TemplateRole{ |
| 78 | group.ID.String(): codersdk.TemplateRoleAdmin, |
nothing calls this directly
no test coverage detected