Skip to content

Instantly share code, notes, and snippets.

@abbasogaji
Last active November 24, 2019 16:05
Show Gist options
  • Save abbasogaji/86d6b183e7788298ff28dca2c6e0e200 to your computer and use it in GitHub Desktop.
Save abbasogaji/86d6b183e7788298ff28dca2c6e0e200 to your computer and use it in GitHub Desktop.
Test Script for user registration
const httpMocks = require('node-mocks-http')
const expect = require('expect')
const mongoose = require('mongoose')
const { parse } = require('node-html-parser');
const userController = require('./user.controller')
const dotenv = require('dotenv').config();
const { MailSlurp } = require('mailslurp-client')
const User = require('../model/User')
const mailslurp = new MailSlurp({ apiKey: process.env.MAILSLURP_API_KEY })
describe('|||||||| U S E R C O N T R O L L E R T E S T ||||||||', () => {
let userId;
let mailAddress = process.env.MAILSLURP_MAIL_ADDRESS ;
let mailBoxId = process.env.MAILSLURP_INBOX_ID;
// Execute before all test cases within scope
beforeAll( () => {
mongoose.connect(process.env.MONGODB_TEST_CONNECTION_URI, { useNewUrlParser : true, useFindAndModify : false})
})
// Execute after all test cases within scope
afterAll( async(done) => {
const data = await User.deleteOne({_id : userId })
mongoose.disconnect(done)
})
describe(':::::::CREATE USER::::::::::::::::::::::::::::::::::::::::::::::::::::::::', () => {
it('[ CASE 1 ] Stores the personal information into database correctly', (done) => {
let request = httpMocks.createRequest({
method : 'POST',
url : '/api/auth/signup',
body : {
name : 'john wick',
email : mailAddress,
password : "password"
}
})
let response = httpMocks.createResponse({
eventEmitter : require('events').EventEmitter
})
let next = (error) => { console.error(error) }
userController.createUser(request, response, next)
response.on('end', () => {
let data = response._getJSONData()
expect(typeof(data.data)).toBe("object")
userId = data.data.id
done();
})
})
it('[ CASE 2 ] Verify email address using email verification code', async (done) => {
const email = await mailslurp.waitForLatestEmail(mailBoxId)
const emailCode = parse(email.body).querySelector("h1.big-text").childNodes[0].rawText
let request = httpMocks.createRequest({
method : 'POST',
url : '/api/auth/verify/email-registered',
body : {
id : userId,
code : emailCode,
}
})
let response = httpMocks.createResponse({
eventEmitter : require('events').EventEmitter
})
let next = (error) => {console.log(error)}
userController.verifyEmailRegistered(request, response, next)
response.on('end', () => {
let data = response._getJSONData()
expect(data.code).toEqual(emailCode)
expect(data.isVerified).toBe(true)
expect(typeof(data)).toBe("object")
done();
})
})
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment