From c37b31dcb671b001030de7e1732dca76e08ccd07 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Tue, 2 Apr 2024 10:21:57 +0800 Subject: [PATCH] fix tests --- packages/api/src/services/send_emails.ts | 4 +- packages/api/src/utils/createTask.ts | 2 +- packages/api/test/routers/auth.test.ts | 47 +++++-------------- .../api/test/services/create_user.test.ts | 32 +++++-------- 4 files changed, 26 insertions(+), 59 deletions(-) diff --git a/packages/api/src/services/send_emails.ts b/packages/api/src/services/send_emails.ts index a95b4a0cb..3ccb56132 100644 --- a/packages/api/src/services/send_emails.ts +++ b/packages/api/src/services/send_emails.ts @@ -1,7 +1,7 @@ import mailjet from 'node-mailjet' import { env } from '../env' import { generateVerificationToken } from '../utils/auth' -import { enqueueSendConfirmationEmail } from '../utils/createTask' +import { enqueueConfirmationEmail } from '../utils/createTask' import { logger } from '../utils/logger' import { sendEmail } from '../utils/sendEmail' @@ -19,7 +19,7 @@ export const sendConfirmationEmail = async (user: { link, } - await enqueueSendConfirmationEmail({ + await enqueueConfirmationEmail({ emailAddress: user.email, link, templateData: dynamicTemplateData, diff --git a/packages/api/src/utils/createTask.ts b/packages/api/src/utils/createTask.ts index 8b6bb3514..b42884386 100644 --- a/packages/api/src/utils/createTask.ts +++ b/packages/api/src/utils/createTask.ts @@ -844,7 +844,7 @@ export const enqueueExportItem = async (jobData: ExportItemJobData) => { }) } -export const enqueueSendConfirmationEmail = async ( +export const enqueueConfirmationEmail = async ( jobData: SendConfirmationEmailData ) => { const queue = await getBackendQueue() diff --git a/packages/api/test/routers/auth.test.ts b/packages/api/test/routers/auth.test.ts index 58bb48ab6..d00c5f3ef 100644 --- a/packages/api/test/routers/auth.test.ts +++ b/packages/api/test/routers/auth.test.ts @@ -1,11 +1,14 @@ import { MailDataRequired } from '@sendgrid/helpers/classes/mail' +import { Job } from 'bullmq' import chai, { expect } from 'chai' import sinon from 'sinon' import sinonChai from 'sinon-chai' import supertest from 'supertest' import { StatusType, User } from '../../src/entity/user' +import { SendConfirmationEmailData } from '../../src/jobs/send_email' import { getRepository } from '../../src/repository' import { userRepository } from '../../src/repository/user' +import { isValidSignupRequest } from '../../src/routers/auth/auth_router' import { AuthProvider } from '../../src/routers/auth/auth_types' import { createPendingUserToken } from '../../src/routers/auth/jwt_helpers' import { searchLibraryItems } from '../../src/services/library_item' @@ -15,10 +18,10 @@ import { generateVerificationToken, hashPassword, } from '../../src/utils/auth' +import * as createTask from '../../src/utils/createTask' import * as util from '../../src/utils/sendEmail' import { createTestUser } from '../db' import { generateFakeUuid, request } from '../util' -import { isValidSignupRequest } from '../../src/routers/auth/auth_router' chai.use(sinonChai) @@ -47,8 +50,6 @@ describe('auth router', () => { let name: string context('when inputs are valid and user not exists', () => { - let fake: (msg: MailDataRequired) => Promise - before(() => { password = validPassword username = 'Some_username' @@ -62,14 +63,6 @@ describe('auth router', () => { }) context('when confirmation email sent', () => { - beforeEach(() => { - fake = sinon.replace(util, 'sendEmail', sinon.fake.resolves(true)) - }) - - afterEach(() => { - sinon.restore() - }) - it('redirects to verify email', async () => { const res = await signupRequest( email, @@ -90,28 +83,6 @@ describe('auth router', () => { expect(user?.name).to.eql(name) }) }) - - context('when confirmation email not sent', () => { - before(() => { - fake = sinon.replace(util, 'sendEmail', sinon.fake.resolves(false)) - }) - - after(() => { - sinon.restore() - }) - - it('redirects to sign up page with error code INVALID_EMAIL', async () => { - const res = await signupRequest( - email, - password, - name, - username - ).expect(302) - expect(res.header.location).to.endWith( - '/email-signup?errorCodes=INVALID_EMAIL' - ) - }) - }) }) context('when user exists', () => { @@ -214,10 +185,16 @@ describe('auth router', () => { }) context('when user is not confirmed', async () => { - let fake: (msg: MailDataRequired) => Promise + let fake: ( + jobData: SendConfirmationEmailData + ) => Promise | undefined> beforeEach(async () => { - fake = sinon.replace(util, 'sendEmail', sinon.fake.resolves(true)) + fake = sinon.replace( + createTask, + 'enqueueConfirmationEmail', + sinon.fake() + ) await updateUser(user.id, { status: StatusType.Pending }) email = user.email password = correctPassword diff --git a/packages/api/test/services/create_user.test.ts b/packages/api/test/services/create_user.test.ts index 4d4b21c26..23a210b8e 100644 --- a/packages/api/test/services/create_user.test.ts +++ b/packages/api/test/services/create_user.test.ts @@ -1,14 +1,15 @@ -import { MailDataRequired } from '@sendgrid/helpers/classes/mail' +import { Job } from 'bullmq' import chai, { expect } from 'chai' import 'mocha' import sinon from 'sinon' import sinonChai from 'sinon-chai' import { Filter } from '../../src/entity/filter' import { StatusType, User } from '../../src/entity/user' +import { SendConfirmationEmailData } from '../../src/jobs/send_email' import { authTrx, getRepository } from '../../src/repository' import { findProfile } from '../../src/services/profile' import { deleteUser } from '../../src/services/user' -import * as util from '../../src/utils/sendEmail' +import * as createTask from '../../src/utils/createTask' import { createTestUser, createUserWithoutProfile, @@ -95,11 +96,17 @@ describe('create user', () => { context('create a user with pending confirmation', () => { const name = 'pendingUser' - let fake: (msg: MailDataRequired) => Promise + let fake: ( + jobData: SendConfirmationEmailData + ) => Promise | undefined> context('when email sends successfully', () => { beforeEach(() => { - fake = sinon.replace(util, 'sendEmail', sinon.fake.resolves(true)) + fake = sinon.replace( + createTask, + 'enqueueConfirmationEmail', + sinon.fake() + ) }) afterEach(async () => { @@ -121,22 +128,5 @@ describe('create user', () => { expect(fake).to.have.been.calledOnce }) }) - - context('when failed to send email', () => { - before(() => { - fake = sinon.replace(util, 'sendEmail', sinon.fake.resolves(false)) - }) - - after(async () => { - sinon.restore() - const user = await getRepository(User).findOneBy({ name }) - await deleteUser(user!.id) - }) - - it('rejects with error', async () => { - return expect(createTestUser(name, undefined, undefined, true)).to.be - .rejected - }) - }) }) })