Skip to content

Commit 87f28a2

Browse files
committed
Add unit test for log into suspended account
1 parent 43dece2 commit 87f28a2

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

coderd/users.go

+8
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,14 @@ func (api *API) postLogin(rw http.ResponseWriter, r *http.Request) {
637637
return
638638
}
639639

640+
// If the user logged into a suspended account, reject the login request.
641+
if user.Status != database.UserStatusActive {
642+
httpapi.Write(rw, http.StatusUnauthorized, httpapi.Response{
643+
Message: fmt.Sprintf("user is not active (status = %q), contact an admin to reactivate your account", user.Status),
644+
})
645+
return
646+
}
647+
640648
sessionToken, created := api.createAPIKey(rw, r, database.InsertAPIKeyParams{
641649
UserID: user.ID,
642650
LoginType: database.LoginTypePassword,

coderd/users_test.go

+22
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,28 @@ func TestPostLogin(t *testing.T) {
8181
require.Equal(t, http.StatusUnauthorized, apiErr.StatusCode())
8282
})
8383

84+
t.Run("Suspended", func(t *testing.T) {
85+
t.Parallel()
86+
client := coderdtest.New(t, nil)
87+
first := coderdtest.CreateFirstUser(t, client)
88+
89+
member := coderdtest.CreateAnotherUser(t, client, first.OrganizationID)
90+
memberUser, err := member.User(context.Background(), codersdk.Me)
91+
require.NoError(t, err, "fetch member user")
92+
93+
_, err = client.UpdateUserStatus(context.Background(), memberUser.Username, codersdk.UserStatusSuspended)
94+
require.NoError(t, err, "suspend member")
95+
96+
_, err = client.LoginWithPassword(context.Background(), codersdk.LoginWithPasswordRequest{
97+
Email: memberUser.Email,
98+
Password: "testpass",
99+
})
100+
var apiErr *codersdk.Error
101+
require.ErrorAs(t, err, &apiErr)
102+
require.Equal(t, http.StatusUnauthorized, apiErr.StatusCode())
103+
require.Contains(t, apiErr.Message, "suspended")
104+
})
105+
84106
t.Run("Success", func(t *testing.T) {
85107
t.Parallel()
86108
client := coderdtest.New(t, nil)

0 commit comments

Comments
 (0)