fix tests

This commit is contained in:
Hongbo Wu
2024-04-02 10:21:57 +08:00
parent 10dcb922f2
commit c37b31dcb6
4 changed files with 26 additions and 59 deletions

View File

@ -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<boolean>
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<boolean>
let fake: (
jobData: SendConfirmationEmailData
) => Promise<Job<any, any, string> | 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

View File

@ -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<boolean>
let fake: (
jobData: SendConfirmationEmailData
) => Promise<Job<any, any, string> | 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
})
})
})
})