@@ -151,6 +151,65 @@ func TestScim(t *testing.T) {
151
151
assert .Equal (t , coderd .SCIMAuditAdditionalFields , af )
152
152
assert .Equal (t , database .AuditActionCreate , aLogs [0 ].Action )
153
153
154
+ // Expect users exposed over API
155
+ userRes , err := client .Users (ctx , codersdk.UsersRequest {Search : sUser .Emails [0 ].Value })
156
+ require .NoError (t , err )
157
+ require .Len (t , userRes .Users , 1 )
158
+ assert .Equal (t , sUser .Emails [0 ].Value , userRes .Users [0 ].Email )
159
+ assert .Equal (t , sUser .UserName , userRes .Users [0 ].Username )
160
+ assert .Len (t , userRes .Users [0 ].OrganizationIDs , 1 )
161
+
162
+ // Expect zero notifications (SkipNotifications = true)
163
+ require .Empty (t , notifyEnq .Sent )
164
+ })
165
+
166
+ t .Run ("OKNoDefault" , func (t * testing.T ) {
167
+ t .Parallel ()
168
+
169
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
170
+ defer cancel ()
171
+
172
+ // given
173
+ scimAPIKey := []byte ("hi" )
174
+ mockAudit := audit .NewMock ()
175
+ notifyEnq := & testutil.FakeNotificationsEnqueuer {}
176
+ dv := coderdtest .DeploymentValues (t )
177
+ dv .OIDC .OrganizationAssignDefault = false
178
+ client , _ := coderdenttest .New (t , & coderdenttest.Options {
179
+ Options : & coderdtest.Options {
180
+ Auditor : mockAudit ,
181
+ NotificationsEnqueuer : notifyEnq ,
182
+ DeploymentValues : dv ,
183
+ },
184
+ SCIMAPIKey : scimAPIKey ,
185
+ AuditLogging : true ,
186
+ LicenseOptions : & coderdenttest.LicenseOptions {
187
+ AccountID : "coolin" ,
188
+ Features : license.Features {
189
+ codersdk .FeatureSCIM : 1 ,
190
+ codersdk .FeatureAuditLog : 1 ,
191
+ },
192
+ },
193
+ })
194
+ mockAudit .ResetLogs ()
195
+
196
+ // when
197
+ sUser := makeScimUser (t )
198
+ res , err := client .Request (ctx , "POST" , "/scim/v2/Users" , sUser , setScimAuth (scimAPIKey ))
199
+ require .NoError (t , err )
200
+ defer res .Body .Close ()
201
+ require .Equal (t , http .StatusOK , res .StatusCode )
202
+
203
+ // then
204
+ // Expect audit logs
205
+ aLogs := mockAudit .AuditLogs ()
206
+ require .Len (t , aLogs , 1 )
207
+ af := map [string ]string {}
208
+ err = json .Unmarshal ([]byte (aLogs [0 ].AdditionalFields ), & af )
209
+ require .NoError (t , err )
210
+ assert .Equal (t , coderd .SCIMAuditAdditionalFields , af )
211
+ assert .Equal (t , database .AuditActionCreate , aLogs [0 ].Action )
212
+
154
213
// Expect users exposed over API
155
214
userRes , err := client .Users (ctx , codersdk.UsersRequest {Search : sUser .Emails [0 ].Value })
156
215
require .NoError (t , err )
0 commit comments