diff --git a/packages/api/src/resolvers/user/index.ts b/packages/api/src/resolvers/user/index.ts index 38b0111e2..dad2a13fa 100644 --- a/packages/api/src/resolvers/user/index.ts +++ b/packages/api/src/resolvers/user/index.ts @@ -320,9 +320,11 @@ export const deleteAccountResolver = authorized< DeleteAccountError, MutationDeleteAccountArgs >(async (_, { userID }, { log }) => { - // soft delete user + // soft delete user and change email address for user to sign up again const result = await updateUser(userID, { status: StatusType.Deleted, + email: `deleted_user_${userID}@omnivore.app`, + sourceUserId: `deleted_user_${userID}`, }) if (!result.affected) { log.error('Error deleting user account') diff --git a/packages/api/test/resolvers/user.test.ts b/packages/api/test/resolvers/user.test.ts index d3ac7ea4f..5e19f714a 100644 --- a/packages/api/test/resolvers/user.test.ts +++ b/packages/api/test/resolvers/user.test.ts @@ -1,10 +1,11 @@ import { expect } from 'chai' import 'mocha' -import { User } from '../../src/entity/user' +import { StatusType, User } from '../../src/entity/user' import { UpdateUserErrorCode, UpdateUserProfileErrorCode, } from '../../src/generated/graphql' +import { userRepository } from '../../src/repository/user' import { findProfile } from '../../src/services/profile' import { deleteUser, findActiveUser } from '../../src/services/user' import { hashPassword } from '../../src/utils/auth' @@ -272,11 +273,15 @@ describe('User API', () => { }) context('when user id is valid', () => { - it('deletes user and responds with 200', async () => { + it('deletes user and changes email address', async () => { const response = await graphqlRequest(query(userId), authToken).expect( 200 ) expect(response.body.data.deleteAccount.userID).to.eql(userId) + + const user = await userRepository.findOneBy({ id: userId }) + expect(user?.status).to.eql(StatusType.Deleted) + expect(user?.email).to.eql(`deleted_user_${userId}@omnivore.app`) }) })