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

Function TestExecutorRequireActiveVersion

coderd/autobuild/lifecycle_executor_test.go:1097–1163  ·  view source on GitHub ↗

Test that an AGPL AccessControlStore properly disables functionality.

(t *testing.T)

Source from the content-addressed store, hash-verified

1095// Test that an AGPL AccessControlStore properly disables
1096// functionality.
1097func TestExecutorRequireActiveVersion(t *testing.T) {
1098 t.Parallel()
1099
1100 var (
1101 sched = mustSchedule(t, "CRON_TZ=UTC 0 * * * *")
1102 ticker = make(chan time.Time)
1103 statCh = make(chan autobuild.Stats)
1104
1105 ownerClient, db = coderdtest.NewWithDatabase(t, &coderdtest.Options{
1106 AutobuildTicker: ticker,
1107 IncludeProvisionerDaemon: true,
1108 AutobuildStats: statCh,
1109 TemplateScheduleStore: schedule.NewAGPLTemplateScheduleStore(),
1110 })
1111 )
1112 // Wait for provisioner to be available
1113 coderdtest.MustWaitForAnyProvisioner(t, db)
1114
1115 ctx := testutil.Context(t, testutil.WaitShort)
1116 owner := coderdtest.CreateFirstUser(t, ownerClient)
1117 me, err := ownerClient.User(ctx, codersdk.Me)
1118 require.NoError(t, err)
1119
1120 // Create an active and inactive template version. We'll
1121 // build a regular member's workspace using a non-active
1122 // template version and assert that the field is not abided
1123 // since there is no enterprise license.
1124 activeVersion := coderdtest.CreateTemplateVersion(t, ownerClient, owner.OrganizationID, nil)
1125 coderdtest.AwaitTemplateVersionJobCompleted(t, ownerClient, activeVersion.ID)
1126 template := coderdtest.CreateTemplate(t, ownerClient, owner.OrganizationID, activeVersion.ID)
1127
1128 ctx = testutil.Context(t, testutil.WaitShort) // Reset context after setting up the template.
1129
1130 //nolint We need to set this in the database directly, because the API will return an error
1131 // letting you know that this feature requires an enterprise license.
1132 err = db.UpdateTemplateAccessControlByID(dbauthz.As(ctx, coderdtest.AuthzUserSubject(me)), database.UpdateTemplateAccessControlByIDParams{
1133 ID: template.ID,
1134 RequireActiveVersion: true,
1135 })
1136 require.NoError(t, err)
1137 inactiveVersion := coderdtest.CreateTemplateVersion(t, ownerClient, owner.OrganizationID, nil, func(ctvr *codersdk.CreateTemplateVersionRequest) {
1138 ctvr.TemplateID = template.ID
1139 })
1140 coderdtest.AwaitTemplateVersionJobCompleted(t, ownerClient, inactiveVersion.ID)
1141 memberClient, _ := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
1142 ws := coderdtest.CreateWorkspace(t, memberClient, uuid.Nil, func(cwr *codersdk.CreateWorkspaceRequest) {
1143 cwr.TemplateVersionID = inactiveVersion.ID
1144 cwr.AutostartSchedule = ptr.Ref(sched.String())
1145 })
1146 _ = coderdtest.AwaitWorkspaceBuildJobCompleted(t, ownerClient, ws.LatestBuild.ID)
1147 ws = coderdtest.MustTransitionWorkspace(t, memberClient, ws.ID, codersdk.WorkspaceTransitionStart, codersdk.WorkspaceTransitionStop, func(req *codersdk.CreateWorkspaceBuildRequest) {
1148 req.TemplateVersionID = inactiveVersion.ID
1149 })
1150 require.Equal(t, inactiveVersion.ID, ws.LatestBuild.TemplateVersionID)
1151
1152 p, err := coderdtest.GetProvisionerForTags(db, time.Now(), ws.OrganizationID, nil)
1153 require.NoError(t, err)
1154

Callers

nothing calls this directly

Calls 15

NewWithDatabaseFunction · 0.92
ContextFunction · 0.92
CreateFirstUserFunction · 0.92
CreateTemplateVersionFunction · 0.92
CreateTemplateFunction · 0.92
AsFunction · 0.92
AuthzUserSubjectFunction · 0.92
CreateAnotherUserFunction · 0.92
CreateWorkspaceFunction · 0.92

Tested by

no test coverage detected