Skip to content

Commit a771d35

Browse files
committed
More tests fixed
1 parent 972c807 commit a771d35

File tree

2 files changed

+55
-8
lines changed

2 files changed

+55
-8
lines changed

coderd/users.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -671,7 +671,24 @@ func (api *API) putUserStatus(status database.UserStatus) func(rw http.ResponseW
671671
defer commitAudit()
672672
aReq.Old = user
673673

674-
if status == database.UserStatusSuspended {
674+
if status == database.UserStatusDormant {
675+
// There are some manual protections when marking a user as dormant to
676+
// prevent certain situations.
677+
switch {
678+
case user.ID == apiKey.UserID:
679+
// User can't mark themselves as dormant, as they are active now.
680+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
681+
Message: "You cannot mark own user as dormant.",
682+
})
683+
return
684+
case slice.Contains(user.RBACRoles, rbac.RoleOwner()):
685+
// You can't mark an owner account as dormant
686+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
687+
Message: fmt.Sprintf("You cannot mark a user as dormant with the %q role. You must remove the role first.", rbac.RoleOwner()),
688+
})
689+
return
690+
}
691+
} else if status == database.UserStatusSuspended {
675692
// There are some manual protections when suspending a user to
676693
// prevent certain situations.
677694
switch {

coderd/users_test.go

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,14 +1097,40 @@ func TestPutUserDormant(t *testing.T) {
10971097
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
10981098
defer cancel()
10991099

1100-
client.User(ctx, codersdk.Me)
11011100
_, err := client.UpdateUserStatus(ctx, codersdk.Me, codersdk.UserStatusDormant)
11021101

11031102
require.ErrorContains(t, err, "cannot mark own user as dormant")
11041103
})
11051104
}
11061105

1107-
// FIXME Activate dormant account
1106+
func TestActivateDormantUser(t *testing.T) {
1107+
t.Parallel()
1108+
client := coderdtest.New(t, nil)
1109+
1110+
// Create users
1111+
me := coderdtest.CreateFirstUser(t, client)
1112+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
1113+
defer cancel()
1114+
anotherUser, err := client.CreateUser(ctx, codersdk.CreateUserRequest{
1115+
Email: "coder@coder.com",
1116+
Username: "coder",
1117+
Password: "SomeStrongPassword!",
1118+
OrganizationID: me.OrganizationID,
1119+
})
1120+
require.NoError(t, err)
1121+
1122+
// Ensure that new user has dormant account
1123+
require.Equal(t, codersdk.UserStatusDormant, anotherUser.Status)
1124+
1125+
// Activate user account
1126+
_, err = client.UpdateUserStatus(ctx, anotherUser.Username, codersdk.UserStatusActive)
1127+
require.NoError(t, err)
1128+
1129+
// Verify if the account is active now
1130+
anotherUser, err = client.User(ctx, anotherUser.Username)
1131+
require.NoError(t, err)
1132+
require.Equal(t, codersdk.UserStatusActive, anotherUser.Status)
1133+
}
11081134

11091135
func TestGetUser(t *testing.T) {
11101136
t.Parallel()
@@ -1426,17 +1452,21 @@ func TestGetUsers(t *testing.T) {
14261452
})
14271453
require.NoError(t, err)
14281454

1429-
bruno, err := client.CreateUser(ctx, codersdk.CreateUserRequest{
1430-
Email: "bruno@email.com",
1431-
Username: "bruno",
1455+
_, err = client.UpdateUserStatus(ctx, alice.Username, codersdk.UserStatusSuspended)
1456+
require.NoError(t, err)
1457+
1458+
// Tom will be active
1459+
tom, err := client.CreateUser(ctx, codersdk.CreateUserRequest{
1460+
Email: "tom@email.com",
1461+
Username: "tom",
14321462
Password: "MySecurePassword!",
14331463
OrganizationID: first.OrganizationID,
14341464
})
14351465
require.NoError(t, err)
1436-
active = append(active, bruno)
14371466

1438-
_, err = client.UpdateUserStatus(ctx, alice.Username, codersdk.UserStatusSuspended)
1467+
tom, err = client.UpdateUserStatus(ctx, tom.Username, codersdk.UserStatusActive)
14391468
require.NoError(t, err)
1469+
active = append(active, tom)
14401470

14411471
res, err := client.Users(ctx, codersdk.UsersRequest{
14421472
Status: codersdk.UserStatusActive,

0 commit comments

Comments
 (0)