@@ -31,6 +31,8 @@ func TestRoleSyncTable(t *testing.T) {
31
31
"create-bar" , "create-baz" ,
32
32
"legacy-bar" , rbac .RoleOrgAuditor (),
33
33
},
34
+ // bad-claim is a number, and will fail any role sync
35
+ "bad-claim" : 100 ,
34
36
}
35
37
36
38
//ids := coderdtest.NewDeterministicUUIDGenerator()
@@ -43,41 +45,83 @@ func TestRoleSyncTable(t *testing.T) {
43
45
},
44
46
},
45
47
{
46
- Name : "NoSyncNoChange " ,
48
+ Name : "SyncDisabled " ,
47
49
OrganizationRoles : []string {
48
50
rbac .RoleOrgAdmin (),
49
51
},
52
+ RoleSettings : & idpsync.RoleSyncSettings {},
50
53
assertRoles : & orgRoleAssert {
51
54
ExpectedOrgRoles : []string {
52
55
rbac .RoleOrgAdmin (),
53
56
},
54
57
},
55
58
},
56
59
{
57
- Name : "NoChange" ,
60
+ // Audit role from claim
61
+ Name : "RawAudit" ,
58
62
OrganizationRoles : []string {
59
63
rbac .RoleOrgAdmin (),
60
64
},
61
- RoleSettings : & idpsync.RoleSyncSettings {},
65
+ RoleSettings : & idpsync.RoleSyncSettings {
66
+ Field : "roles" ,
67
+ Mapping : map [string ][]string {},
68
+ },
62
69
assertRoles : & orgRoleAssert {
63
70
ExpectedOrgRoles : []string {
64
- rbac .RoleOrgAdmin (),
71
+ rbac .RoleOrgAuditor (),
65
72
},
66
73
},
67
74
},
68
75
{
69
- // Audit role from claim
70
- Name : "RawAudit" ,
76
+ Name : "CustomRole" ,
71
77
OrganizationRoles : []string {
72
78
rbac .RoleOrgAdmin (),
73
79
},
80
+ CustomRoles : []string {"foo" },
74
81
RoleSettings : & idpsync.RoleSyncSettings {
75
82
Field : "roles" ,
76
83
Mapping : map [string ][]string {},
77
84
},
78
85
assertRoles : & orgRoleAssert {
79
86
ExpectedOrgRoles : []string {
80
87
rbac .RoleOrgAuditor (),
88
+ "foo" ,
89
+ },
90
+ },
91
+ },
92
+ {
93
+ Name : "RoleMapping" ,
94
+ OrganizationRoles : []string {
95
+ rbac .RoleOrgAdmin (),
96
+ "invalid" , // Throw in an extra invalid role that will be removed
97
+ },
98
+ CustomRoles : []string {"custom" },
99
+ RoleSettings : & idpsync.RoleSyncSettings {
100
+ Field : "roles" ,
101
+ Mapping : map [string ][]string {
102
+ "foo" : {"custom" , rbac .RoleOrgTemplateAdmin ()},
103
+ },
104
+ },
105
+ assertRoles : & orgRoleAssert {
106
+ ExpectedOrgRoles : []string {
107
+ rbac .RoleOrgAuditor (),
108
+ rbac .RoleOrgTemplateAdmin (),
109
+ "custom" ,
110
+ },
111
+ },
112
+ },
113
+ {
114
+ // InvalidClaims will log an error, but do not block authentication.
115
+ // This is to prevent a misconfigured organization from blocking
116
+ // a user from authenticating.
117
+ Name : "InvalidClaim" ,
118
+ OrganizationRoles : []string {rbac .RoleOrgAdmin ()},
119
+ RoleSettings : & idpsync.RoleSyncSettings {
120
+ Field : "bad-claim" ,
121
+ },
122
+ assertRoles : & orgRoleAssert {
123
+ ExpectedOrgRoles : []string {
124
+ rbac .RoleOrgAdmin (),
81
125
},
82
126
},
83
127
},
@@ -90,7 +134,9 @@ func TestRoleSyncTable(t *testing.T) {
90
134
91
135
db , _ := dbtestutil .NewDB (t )
92
136
manager := runtimeconfig .NewManager ()
93
- s := idpsync .NewAGPLSync (slogtest .Make (t , & slogtest.Options {}),
137
+ s := idpsync .NewAGPLSync (slogtest .Make (t , & slogtest.Options {
138
+ IgnoreErrors : true ,
139
+ }),
94
140
manager ,
95
141
idpsync.DeploymentSyncSettings {
96
142
SiteRoleField : "roles" ,
@@ -105,6 +151,7 @@ func TestRoleSyncTable(t *testing.T) {
105
151
// Do the group sync!
106
152
err := s .SyncRoles (ctx , db , user , idpsync.RoleParams {
107
153
SyncEnabled : true ,
154
+ SyncSiteWide : false ,
108
155
MergedClaims : userClaims ,
109
156
})
110
157
require .NoError (t , err )
0 commit comments