@@ -545,6 +545,84 @@ func TestAuditLogDefaultLimit(t *testing.T) {
545
545
require .Len (t , rows , 100 )
546
546
}
547
547
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
+
548
626
// TestReadCustomRoles tests the input params returns the correct set of roles.
549
627
func TestReadCustomRoles (t * testing.T ) {
550
628
t .Parallel ()
0 commit comments