6
6
"encoding/json"
7
7
"io"
8
8
"net/url"
9
+ "slices"
9
10
"strconv"
10
11
"strings"
11
12
"sync"
@@ -22,6 +23,7 @@ import (
22
23
"storj.io/drpc"
23
24
24
25
"cdr.dev/slog/sloggers/slogtest"
26
+ "github.com/coder/coder/v2/coderd/rbac"
25
27
"github.com/coder/quartz"
26
28
"github.com/coder/serpent"
27
29
@@ -203,6 +205,20 @@ func TestAcquireJob(t *testing.T) {
203
205
GroupID : group1 .ID ,
204
206
})
205
207
require .NoError (t , err )
208
+ dbgen .OrganizationMember (t , db , database.OrganizationMember {
209
+ UserID : user .ID ,
210
+ OrganizationID : pd .OrganizationID ,
211
+ Roles : []string {rbac .RoleOrgAuditor ()},
212
+ })
213
+
214
+ // Add extra erronous roles
215
+ secondOrg := dbgen .Organization (t , db , database.Organization {})
216
+ dbgen .OrganizationMember (t , db , database.OrganizationMember {
217
+ UserID : user .ID ,
218
+ OrganizationID : secondOrg .ID ,
219
+ Roles : []string {rbac .RoleOrgAuditor ()},
220
+ })
221
+
206
222
link := dbgen .UserLink (t , db , database.UserLink {
207
223
LoginType : database .LoginTypeOIDC ,
208
224
UserID : user .ID ,
@@ -350,7 +366,7 @@ func TestAcquireJob(t *testing.T) {
350
366
WorkspaceOwnerEmail : user .Email ,
351
367
WorkspaceOwnerName : user .Name ,
352
368
WorkspaceOwnerOidcAccessToken : link .OAuthAccessToken ,
353
- WorkspaceOwnerGroups : []string {group1 .Name },
369
+ WorkspaceOwnerGroups : []string {"Everyone" , group1 .Name },
354
370
WorkspaceId : workspace .ID .String (),
355
371
WorkspaceOwnerId : user .ID .String (),
356
372
TemplateId : template .ID .String (),
@@ -361,11 +377,15 @@ func TestAcquireJob(t *testing.T) {
361
377
WorkspaceOwnerSshPrivateKey : sshKey .PrivateKey ,
362
378
WorkspaceBuildId : build .ID .String (),
363
379
WorkspaceOwnerLoginType : string (user .LoginType ),
364
- WorkspaceOwnerRbacRoles : []* sdkproto.Role {{Name : "member" , OrgId : pd .OrganizationID .String ()}},
380
+ WorkspaceOwnerRbacRoles : []* sdkproto.Role {{Name : rbac . RoleOrgMember (), OrgId : pd . OrganizationID . String ()}, { Name : "member" , OrgId : "" }, { Name : rbac . RoleOrgAuditor () , OrgId : pd .OrganizationID .String ()}},
365
381
}
366
382
if prebuiltWorkspace {
367
383
wantedMetadata .IsPrebuild = true
368
384
}
385
+
386
+ slices .SortFunc (wantedMetadata .WorkspaceOwnerRbacRoles , func (a , b * sdkproto.Role ) int {
387
+ return strings .Compare (a .Name + a .OrgId , b .Name + b .OrgId )
388
+ })
369
389
want , err := json .Marshal (& proto.AcquiredJob_WorkspaceBuild_ {
370
390
WorkspaceBuild : & proto.AcquiredJob_WorkspaceBuild {
371
391
WorkspaceBuildId : build .ID .String (),
@@ -467,6 +487,13 @@ func TestAcquireJob(t *testing.T) {
467
487
job , err := tc .acquire (ctx , srv )
468
488
require .NoError (t , err )
469
489
490
+ // sort
491
+ if wk , ok := job .Type .(* proto.AcquiredJob_WorkspaceBuild_ ); ok {
492
+ slices .SortFunc (wk .WorkspaceBuild .Metadata .WorkspaceOwnerRbacRoles , func (a , b * sdkproto.Role ) int {
493
+ return strings .Compare (a .Name + a .OrgId , b .Name + b .OrgId )
494
+ })
495
+ }
496
+
470
497
got , err := json .Marshal (job .Type )
471
498
require .NoError (t , err )
472
499
0 commit comments