import { addHours } from 'date-fns'; import { uuid } from 'uuidv4'; import RecoverPasswordRequest from '@domains/users/infra/typeorm/entities/RecoverPasswordRequest'; import IRecoverPasswordRequestsRepository from '@domains/users/interfaces/IRecoverPasswordRequestsRepository'; import { RESET_PASSWORD_REQUEST_EXPIRES_IN_HOURS } from '@domains/users/constants/resetPassword'; class FakeRecoverPasswordRequestsRepository implements IRecoverPasswordRequestsRepository { private requests: RecoverPasswordRequest[] = []; public async create(user_id: string): Promise<RecoverPasswordRequest> { const recoverPasswordRequest = Object.assign(new RecoverPasswordRequest(), { user_id, token: uuid(), expires_at: addHours(Date.now(), RESET_PASSWORD_REQUEST_EXPIRES_IN_HOURS), created_at: new Date(), updated_at: new Date(), }); this.requests.push(recoverPasswordRequest); return recoverPasswordRequest; } public async findByToken( token: RecoverPasswordRequest['token'], ): Promise<RecoverPasswordRequest | undefined> { const recoverPasswordRequest = this.requests.find( findRecoverPasswordRequest => findRecoverPasswordRequest.token === token, ); return recoverPasswordRequest; } public async delete(id: RecoverPasswordRequest['id']): Promise<void> { const requestIndex = this.requests.findIndex(request => request.id === id); if (requestIndex > -1) { this.requests.splice(requestIndex, 1); } } } export default FakeRecoverPasswordRequestsRepository;