Advertisement
Guest User

Integration testing of signinUserValidator

a guest
Jul 5th, 2018
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import supertest from 'supertest';
  2. import bcrypt from 'bcrypt';
  3. import app from '../../../index';
  4. import { User } from '../../../database/models'
  5.  
  6. describe('The user login', () => {
  7.  
  8.     beforeEach( async () => {
  9.         // Clear the database
  10.         await User.destroy({ where: {} })
  11.     });
  12.    
  13.     test('the user can log in and get a jwt ', async () => {
  14.        
  15.         /// arrange
  16.  
  17.         //setup fake user data
  18.         const fakeUser = {
  19.             name: 'bahdcoder',
  20.             email: 'bahdcoder@gmail.com',
  21.             password: 'password'
  22.         }
  23.  
  24.         // create new user
  25.         await User.create({
  26.             name: fakeUser.name,
  27.             email: fakeUser.email,
  28.             password: bcrypt.hashSync(fakeUser.password, 1)
  29.         }); //come back later
  30.        
  31.         /// action
  32.  
  33.         // make POST request to login
  34.         const response = await supertest(app).post('/api/v1/users/signin').send({
  35.             email: fakeUser.email,
  36.             password: fakeUser.password
  37.         })
  38.  
  39.         //console.log(response.body)
  40.  
  41.  
  42.         /// assertion
  43.         expect(response.status).toBe(200);
  44.  
  45.         //assert response from server contains jwt and user data
  46.         expect(response.body.data.access_token).toBeTruthy();
  47.         expect(response.body.data.user.email).toBe(fakeUser.email);
  48.  
  49.  
  50.     });
  51.  
  52.     test('if user tries to login without password, return error password required', async () => {
  53.        
  54.         /// Arrange
  55.  
  56.         //setup fake user data
  57.         const fakeUser = {
  58.             name: 'bahdcoder',
  59.             email: 'bahdcoder@gmail.com',
  60.             password: ''
  61.         }
  62.  
  63.         // create new user
  64.         await User.create({
  65.             name: fakeUser.name,
  66.             email: fakeUser.email,
  67.             password: fakeUser.password
  68.         }); //come back later
  69.        
  70.         /// action
  71.  
  72.         // make POST request to login
  73.         const response = await supertest(app).post('/api/v1/users/signin').send({
  74.             email: fakeUser.email,
  75.             password: fakeUser.password
  76.         })
  77.  
  78.         // console.log(response.body)
  79.  
  80.         /// Assertion
  81.         expect(response.body.status).toBe('fail');
  82.         expect(response.body.data).toEqual({errors: ['The password is required.']});
  83.  
  84.     });
  85.  
  86.     test('if user tries to login without email, return error email required', async () => {
  87.         /// Arrange
  88.  
  89.         //setup fake user data
  90.         const fakeUser = {
  91.             name: 'bahdcoder',
  92.             email: '',
  93.             password: 'password'
  94.         }
  95.  
  96.         // create new user
  97.         await User.create({
  98.             name: fakeUser.name,
  99.             email: fakeUser.email,
  100.             password: fakeUser.password
  101.         }); //come back later
  102.        
  103.         /// action
  104.  
  105.         // make POST request to login
  106.         const response = await supertest(app).post('/api/v1/users/signin').send({
  107.             email: fakeUser.email,
  108.             password: fakeUser.password
  109.         })
  110.  
  111.         //console.log(response.body)
  112.  
  113.         /// Assertion
  114.         expect(response.body.status).toBe('fail');
  115.         expect(response.body.data).toEqual({errors: ['The email is required.']});
  116.     });
  117.  
  118.     test('if user tries to login with invalid email, return error email must be valid', async () => {
  119.        
  120.         /// Arrange
  121.  
  122.         //setup fake user data
  123.         const fakeUser = {
  124.             name: 'bahdcoder',
  125.             email: 'bahdcoder@gmailcom',
  126.             password: 'password'
  127.         }
  128.  
  129.         // create new user
  130.         await User.create({
  131.             name: fakeUser.name,
  132.             email: fakeUser.email,
  133.             password: fakeUser.password
  134.         }); //come back later
  135.        
  136.         /// action
  137.  
  138.         // make POST request to login
  139.         const response = await supertest(app).post('/api/v1/users/signin').send({
  140.             email: fakeUser.email,
  141.             password: fakeUser.password
  142.         })
  143.  
  144.         // console.log(response)
  145.  
  146.         /// Assertion
  147.         expect(response.body.status).toBe('fail');
  148.         expect(response.body.data).toEqual({errors: ['The email must be a valid email address.']});
  149.     });
  150.  
  151. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement