4
4
"context"
5
5
"encoding/json"
6
6
"fmt"
7
+ "io"
7
8
"net/http"
8
9
"testing"
9
10
@@ -164,6 +165,54 @@ func TestScim(t *testing.T) {
164
165
assert .Equal (t , sUser .UserName , userRes .Users [0 ].Username )
165
166
})
166
167
168
+ t .Run ("Unsuspend" , func (t * testing.T ) {
169
+ t .Parallel ()
170
+
171
+ ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
172
+ defer cancel ()
173
+
174
+ scimAPIKey := []byte ("hi" )
175
+ client , _ := coderdenttest .New (t , & coderdenttest.Options {
176
+ SCIMAPIKey : scimAPIKey ,
177
+ LicenseOptions : & coderdenttest.LicenseOptions {
178
+ AccountID : "coolin" ,
179
+ Features : license.Features {
180
+ codersdk .FeatureSCIM : 1 ,
181
+ },
182
+ },
183
+ })
184
+
185
+ sUser := makeScimUser (t )
186
+ res , err := client .Request (ctx , "POST" , "/scim/v2/Users" , sUser , setScimAuth (scimAPIKey ))
187
+ require .NoError (t , err )
188
+ defer res .Body .Close ()
189
+ assert .Equal (t , http .StatusOK , res .StatusCode )
190
+ err = json .NewDecoder (res .Body ).Decode (& sUser )
191
+ require .NoError (t , err )
192
+
193
+ sUser .Active = false
194
+ res , err = client .Request (ctx , "PATCH" , "/scim/v2/Users/" + sUser .ID , sUser , setScimAuth (scimAPIKey ))
195
+ require .NoError (t , err )
196
+ _ , _ = io .Copy (io .Discard , res .Body )
197
+ _ = res .Body .Close ()
198
+ assert .Equal (t , http .StatusOK , res .StatusCode )
199
+
200
+ sUser .Active = true
201
+ res , err = client .Request (ctx , "POST" , "/scim/v2/Users" , sUser , setScimAuth (scimAPIKey ))
202
+ require .NoError (t , err )
203
+ _ , _ = io .Copy (io .Discard , res .Body )
204
+ _ = res .Body .Close ()
205
+ assert .Equal (t , http .StatusOK , res .StatusCode )
206
+
207
+ userRes , err := client .Users (ctx , codersdk.UsersRequest {Search : sUser .Emails [0 ].Value })
208
+ require .NoError (t , err )
209
+ require .Len (t , userRes .Users , 1 )
210
+
211
+ assert .Equal (t , sUser .Emails [0 ].Value , userRes .Users [0 ].Email )
212
+ assert .Equal (t , sUser .UserName , userRes .Users [0 ].Username )
213
+ assert .Equal (t , codersdk .UserStatusDormant , userRes .Users [0 ].Status )
214
+ })
215
+
167
216
t .Run ("DomainStrips" , func (t * testing.T ) {
168
217
t .Parallel ()
169
218
@@ -185,7 +234,8 @@ func TestScim(t *testing.T) {
185
234
sUser .UserName = sUser .UserName + "@coder.com"
186
235
res , err := client .Request (ctx , "POST" , "/scim/v2/Users" , sUser , setScimAuth (scimAPIKey ))
187
236
require .NoError (t , err )
188
- defer res .Body .Close ()
237
+ _ , _ = io .Copy (io .Discard , res .Body )
238
+ _ = res .Body .Close ()
189
239
assert .Equal (t , http .StatusOK , res .StatusCode )
190
240
191
241
userRes , err := client .Users (ctx , codersdk.UsersRequest {Search : sUser .Emails [0 ].Value })
@@ -220,7 +270,8 @@ func TestScim(t *testing.T) {
220
270
221
271
res , err := client .Request (ctx , "PATCH" , "/scim/v2/Users/bob" , struct {}{})
222
272
require .NoError (t , err )
223
- defer res .Body .Close ()
273
+ _ , _ = io .Copy (io .Discard , res .Body )
274
+ _ = res .Body .Close ()
224
275
assert .Equal (t , http .StatusNotFound , res .StatusCode )
225
276
})
226
277
@@ -242,7 +293,8 @@ func TestScim(t *testing.T) {
242
293
243
294
res , err := client .Request (ctx , "PATCH" , "/scim/v2/Users/bob" , struct {}{})
244
295
require .NoError (t , err )
245
- defer res .Body .Close ()
296
+ _ , _ = io .Copy (io .Discard , res .Body )
297
+ _ = res .Body .Close ()
246
298
assert .Equal (t , http .StatusInternalServerError , res .StatusCode )
247
299
})
248
300
@@ -276,7 +328,8 @@ func TestScim(t *testing.T) {
276
328
277
329
res , err = client .Request (ctx , "PATCH" , "/scim/v2/Users/" + sUser .ID , sUser , setScimAuth (scimAPIKey ))
278
330
require .NoError (t , err )
279
- defer res .Body .Close ()
331
+ _ , _ = io .Copy (io .Discard , res .Body )
332
+ _ = res .Body .Close ()
280
333
assert .Equal (t , http .StatusOK , res .StatusCode )
281
334
282
335
userRes , err := client .Users (ctx , codersdk.UsersRequest {Search : sUser .Emails [0 ].Value })
0 commit comments