Skip to content

Commit 56bb0b5

Browse files
committed
fix(enterprise/coderd): skip org membership check for prebuilds user on group patch
1 parent ae3882a commit 56bb0b5

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

enterprise/coderd/groups.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/coder/coder/v2/coderd/database/db2sdk"
1515
"github.com/coder/coder/v2/coderd/httpapi"
1616
"github.com/coder/coder/v2/coderd/httpmw"
17+
"github.com/coder/coder/v2/coderd/prebuilds"
1718
"github.com/coder/coder/v2/codersdk"
1819
)
1920

@@ -171,6 +172,11 @@ func (api *API) patchGroup(rw http.ResponseWriter, r *http.Request) {
171172
})
172173
return
173174
}
175+
// Skip membership checks for the prebuilds user.
176+
if id == prebuilds.SystemUserID.String() {
177+
api.Logger.Debug(ctx, "Skipping membership check for prebuilds user")
178+
continue
179+
}
174180
_, err := database.ExpectOne(api.Database.OrganizationMembers(ctx, database.OrganizationMembersParams{
175181
OrganizationID: group.OrganizationID,
176182
UserID: uuid.MustParse(id),

enterprise/coderd/groups_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,32 @@ func TestPatchGroup(t *testing.T) {
465465
require.Equal(t, http.StatusBadRequest, cerr.StatusCode())
466466
})
467467

468+
// For quotas to work with prebuilds, it's currently required to add the
469+
// prebuilds user into a group with a quota allowance.
470+
// See: docs/admin/templates/extending-templates/prebuilt-workspaces.md
471+
t.Run("PrebuildsUser", func(t *testing.T) {
472+
t.Parallel()
473+
474+
client, user := coderdenttest.New(t, &coderdenttest.Options{LicenseOptions: &coderdenttest.LicenseOptions{
475+
Features: license.Features{
476+
codersdk.FeatureTemplateRBAC: 1,
477+
},
478+
}})
479+
userAdminClient, _ := coderdtest.CreateAnotherUser(t, client, user.OrganizationID, rbac.RoleUserAdmin())
480+
ctx := testutil.Context(t, testutil.WaitLong)
481+
group, err := userAdminClient.CreateGroup(ctx, user.OrganizationID, codersdk.CreateGroupRequest{
482+
Name: "prebuilds",
483+
QuotaAllowance: 123,
484+
})
485+
require.NoError(t, err)
486+
487+
group, err = userAdminClient.PatchGroup(ctx, group.ID, codersdk.PatchGroupRequest{
488+
Name: "prebuilds",
489+
AddUsers: []string{prebuilds.SystemUserID.String()},
490+
})
491+
require.NoError(t, err)
492+
})
493+
468494
t.Run("Everyone", func(t *testing.T) {
469495
t.Parallel()
470496
t.Run("NoUpdateName", func(t *testing.T) {

0 commit comments

Comments
 (0)