Skip to content

Commit c85052b

Browse files
committed
add unit test to add rows into the everyone group
1 parent 3de5030 commit c85052b

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

coderd/database/querier_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,84 @@ func TestAuditLogDefaultLimit(t *testing.T) {
545545
require.Len(t, rows, 100)
546546
}
547547

548+
func TestWorkspaceQuotas(t *testing.T) {
549+
t.Parallel()
550+
orgMemberIDs := func(o database.OrganizationMember) uuid.UUID {
551+
return o.UserID
552+
}
553+
groupMemberIDs := func(m database.GroupMember) uuid.UUID {
554+
return m.UserID
555+
}
556+
557+
t.Run("CorruptedEveryone", func(t *testing.T) {
558+
t.Parallel()
559+
560+
ctx := testutil.Context(t, testutil.WaitLong)
561+
562+
db, _ := dbtestutil.NewDB(t)
563+
// Create an extra org as a distraction
564+
distract := dbgen.Organization(t, db, database.Organization{})
565+
_, err := db.InsertAllUsersGroup(ctx, distract.ID)
566+
require.NoError(t, err)
567+
568+
_, err = db.UpdateGroupByID(ctx, database.UpdateGroupByIDParams{
569+
QuotaAllowance: 15,
570+
ID: distract.ID,
571+
})
572+
require.NoError(t, err)
573+
574+
// Create an org with 2 users
575+
org := dbgen.Organization(t, db, database.Organization{})
576+
577+
everyoneGroup, err := db.InsertAllUsersGroup(ctx, org.ID)
578+
require.NoError(t, err)
579+
580+
// Add a quota to the everyone group
581+
_, err = db.UpdateGroupByID(ctx, database.UpdateGroupByIDParams{
582+
QuotaAllowance: 50,
583+
ID: everyoneGroup.ID,
584+
})
585+
require.NoError(t, err)
586+
587+
// Add people to the org
588+
one := dbgen.User(t, db, database.User{})
589+
two := dbgen.User(t, db, database.User{})
590+
memOne := dbgen.OrganizationMember(t, db, database.OrganizationMember{
591+
OrganizationID: org.ID,
592+
UserID: one.ID,
593+
})
594+
memTwo := dbgen.OrganizationMember(t, db, database.OrganizationMember{
595+
OrganizationID: org.ID,
596+
UserID: two.ID,
597+
})
598+
599+
// Fetch the 'Everyone' group members
600+
everyoneMembers, err := db.GetGroupMembersByGroupID(ctx, org.ID)
601+
require.NoError(t, err)
602+
603+
require.ElementsMatch(t, db2sdk.List(everyoneMembers, groupMemberIDs),
604+
db2sdk.List([]database.OrganizationMember{memOne, memTwo}, orgMemberIDs))
605+
606+
// Check the quota is correct.
607+
allowance, err := db.GetQuotaAllowanceForUser(ctx, one.ID)
608+
require.NoError(t, err)
609+
require.Equal(t, int64(50), allowance)
610+
611+
// Now try to corrupt the DB
612+
// Insert rows into the everyone group
613+
err = db.InsertGroupMember(ctx, database.InsertGroupMemberParams{
614+
UserID: memOne.UserID,
615+
GroupID: org.ID,
616+
})
617+
require.NoError(t, err)
618+
619+
// Ensure allowance remains the same
620+
allowance, err = db.GetQuotaAllowanceForUser(ctx, one.ID)
621+
require.NoError(t, err)
622+
require.Equal(t, int64(50), allowance)
623+
})
624+
}
625+
548626
// TestReadCustomRoles tests the input params returns the correct set of roles.
549627
func TestReadCustomRoles(t *testing.T) {
550628
t.Parallel()

0 commit comments

Comments
 (0)