Skip to content

Commit ef4c4d4

Browse files
committed
chore: add a unit test to excercise dormancy bug
1 parent f618f35 commit ef4c4d4

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

enterprise/coderd/scim_test.go

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ import (
88
"net/http"
99
"testing"
1010

11+
"github.com/golang-jwt/jwt/v4"
1112
"github.com/stretchr/testify/assert"
1213
"github.com/stretchr/testify/require"
1314

1415
"github.com/coder/coder/v2/coderd/audit"
1516
"github.com/coder/coder/v2/coderd/coderdtest"
17+
"github.com/coder/coder/v2/coderd/coderdtest/oidctest"
1618
"github.com/coder/coder/v2/coderd/database"
1719
"github.com/coder/coder/v2/codersdk"
1820
"github.com/coder/coder/v2/cryptorand"
@@ -364,5 +366,61 @@ func TestScim(t *testing.T) {
364366
require.Len(t, userRes.Users, 1)
365367
assert.Equal(t, codersdk.UserStatusSuspended, userRes.Users[0].Status)
366368
})
369+
370+
t.Run("ActiveIsActive", func(t *testing.T) {
371+
t.Parallel()
372+
373+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
374+
defer cancel()
375+
376+
scimAPIKey := []byte("hi")
377+
378+
fake := oidctest.NewFakeIDP(t, oidctest.WithServing())
379+
client, _ := coderdenttest.New(t, &coderdenttest.Options{
380+
Options: &coderdtest.Options{
381+
OIDCConfig: fake.OIDCConfig(t, []string{}),
382+
},
383+
SCIMAPIKey: scimAPIKey,
384+
AuditLogging: true,
385+
LicenseOptions: &coderdenttest.LicenseOptions{
386+
AccountID: "coolin",
387+
Features: license.Features{
388+
codersdk.FeatureSCIM: 1,
389+
codersdk.FeatureAuditLog: 1,
390+
},
391+
},
392+
})
393+
394+
sUser := makeScimUser(t)
395+
res, err := client.Request(ctx, "POST", "/scim/v2/Users", sUser, setScimAuth(scimAPIKey))
396+
require.NoError(t, err)
397+
defer res.Body.Close()
398+
assert.Equal(t, http.StatusOK, res.StatusCode)
399+
400+
err = json.NewDecoder(res.Body).Decode(&sUser)
401+
require.NoError(t, err)
402+
403+
scimUser, err := client.User(ctx, sUser.UserName)
404+
require.NoError(t, err)
405+
require.Equal(t, codersdk.UserStatusDormant, scimUser.Status, "user starts as dormant")
406+
407+
scimUserClient, _ := fake.Login(t, client, jwt.MapClaims{
408+
"email": sUser.Emails[0].Value,
409+
})
410+
scimUser, err = scimUserClient.User(ctx, codersdk.Me)
411+
require.NoError(t, err)
412+
require.Equal(t, codersdk.UserStatusActive, scimUser.Status, "user should now be active")
413+
414+
// Patch the user
415+
res, err = client.Request(ctx, "PATCH", "/scim/v2/Users/"+sUser.ID, sUser, setScimAuth(scimAPIKey))
416+
require.NoError(t, err)
417+
_, _ = io.Copy(io.Discard, res.Body)
418+
_ = res.Body.Close()
419+
assert.Equal(t, http.StatusOK, res.StatusCode)
420+
421+
scimUser, err = client.User(ctx, sUser.UserName)
422+
require.NoError(t, err)
423+
require.Equal(t, codersdk.UserStatusActive, scimUser.Status, "user is still active")
424+
})
367425
})
368426
}

0 commit comments

Comments
 (0)