diff --git a/coderd/users_test.go b/coderd/users_test.go index 01cac4d1c8..80c7062c91 100644 --- a/coderd/users_test.go +++ b/coderd/users_test.go @@ -692,7 +692,7 @@ func TestUpdateUserProfile(t *testing.T) { require.Equal(t, http.StatusConflict, apiErr.StatusCode()) }) - t.Run("UpdateUser", func(t *testing.T) { + t.Run("UpdateSelf", func(t *testing.T) { t.Parallel() auditor := audit.NewMock() client := coderdtest.New(t, &coderdtest.Options{Auditor: auditor}) @@ -704,16 +704,49 @@ func TestUpdateUserProfile(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) defer cancel() - _, _ = client.User(ctx, codersdk.Me) - userProfile, err := client.UpdateUserProfile(ctx, codersdk.Me, codersdk.UpdateUserProfileRequest{ - Username: "newusername", - Name: "Mr User", - }) + me, err := client.User(ctx, codersdk.Me) require.NoError(t, err) - require.Equal(t, userProfile.Username, "newusername") - require.Equal(t, userProfile.Name, "Mr User") + + userProfile, err := client.UpdateUserProfile(ctx, codersdk.Me, codersdk.UpdateUserProfileRequest{ + Username: me.Username + "1", + Name: me.Name + "1", + }) numLogs++ // add an audit log for user update + require.NoError(t, err) + require.Equal(t, me.Username+"1", userProfile.Username) + require.Equal(t, me.Name+"1", userProfile.Name) + + require.Len(t, auditor.AuditLogs(), numLogs) + require.Equal(t, database.AuditActionWrite, auditor.AuditLogs()[numLogs-1].Action) + }) + + t.Run("UpdateSelfAsMember", func(t *testing.T) { + t.Parallel() + auditor := audit.NewMock() + client := coderdtest.New(t, &coderdtest.Options{Auditor: auditor}) + numLogs := len(auditor.AuditLogs()) + + firstUser := coderdtest.CreateFirstUser(t, client) + numLogs++ // add an audit log for login + + memberClient, memberUser := coderdtest.CreateAnotherUser(t, client, firstUser.OrganizationID) + numLogs++ // add an audit log for user creation + + ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) + defer cancel() + + userProfile, err := memberClient.UpdateUserProfile(ctx, codersdk.Me, codersdk.UpdateUserProfileRequest{ + Username: memberUser.Username + "1", + Name: memberUser.Name + "1", + }) + numLogs++ // add an audit log for user update + numLogs++ // add an audit log for API key creation + + require.NoError(t, err) + require.Equal(t, memberUser.Username+"1", userProfile.Username) + require.Equal(t, memberUser.Name+"1", userProfile.Name) + require.Len(t, auditor.AuditLogs(), numLogs) require.Equal(t, database.AuditActionWrite, auditor.AuditLogs()[numLogs-1].Action) })