File: //matrixSwot/backend/__tests__/coverage/users/get/login.test.js
//Login
const request = require('supertest');
const app = require('../../../../appWs');
const btoa = require('btoa');
function validLogin(testName, email, password, status, type, result) {
const jsonObj = {
email,
password
}
const form = JSON.stringify(jsonObj);
const user = btoa(form);
try {
test(testName, async () => {
const userData = await request(app).post('/users/login').send({user})
const data = userData.body;
expect(data.status).toEqual(status);
expect(data[type]).toEqual(result);
});
}
catch(error) {
expect(error.toMatch('error'));
}
}
function validLoginArray(testName, email, password, status, type, result) {
const jsonObj = {
email,
password
}
const form = JSON.stringify(jsonObj);
const user = btoa(form);
try {
test(testName, async () => {
const userData = await request(app)
.post('/users/login')
.send({user})
const data = userData.body;
expect(data[0][type]).toEqual(result);
});
}
catch(error) {
expect(error.toMatch('error'));
}
}
//testName, email, password, status, type, result
//USER LOGIN
validLogin('user login', 'free@sonne-consulting.com', '123aAa', 200, 'id', 439875);
//WRONG PASSWORD
validLogin('wrong password', 'free@sonne-consulting.com', '123aaa', 401, 'msg', 'Usuário ou senha incorretos');
//NOT REGISTERED EMAIL
validLogin('not registered email', 'fake@sonne-consulting.com', '123aAa', 400, 'msg', 'Usuário não encontrado');
//DELETED EMAIL
validLogin('deleted email', 'paulo.silva@sonne-consulting.com', '123aAa', 400, 'msg', 'Usuário não encontrado'); //Usuário inativo
//EXCEDED USER
validLogin('exceded email', 'exceeded@sonne-consulting.com', '123aAa', 401, 'msg', 'Número de usuários da conta excedido');
//EMPTY PASSWORD
validLoginArray('empty password', 'free@sonne-consulting.com', '', 401, 'msg', 'A senha não pode estar vazia.');
//EMPTY EMAIL
validLoginArray('empty email', '', '', 401, 'msg', 'O email não pode estar vazio.');
//INVALID EMAIL
validLoginArray('invalid email', 'free@123', '', 401, 'msg', 'O email não e válido.');