...
 
Commits (6)
......@@ -15,3 +15,7 @@ npm-debug.log
.vscode
package-lock.json
requests.http
.nyc_output
coverage
......@@ -10,7 +10,10 @@
"setup": "FORCE=true node index.js && sequelize db:seed:all --config src/config/config.json --seeders-path src/seeders",
"startdev": "nodemon --exec 'node index.js'",
"parchar": "node parches/parchar.js",
"migrar": "sequelize db:migrate --config src/config/config.json --migrations-path src/migrations"
"migrar": "sequelize db:migrate --config src/config/config.json --migrations-path src/migrations",
"setup-test": "NODE_ENV=test FORCE=true node index.js && sequelize db:seed:all --config src/config/config.json --env test --seeders-path src/seeders/",
"unit": "npm run setup-test && NODE_ENV=test mocha tests/unit/*.test.js --config tests/.mocharc.js",
"unit-coverage": "npm run setup-test && NODE_ENV=test nyc --reporter html --reporter text mocha tests/unit/*.test.js --config tests/.mocharc.js"
},
"keywords": [
"node",
......@@ -68,8 +71,9 @@
},
"devDependencies": {
"chai": "^3.5.0",
"eslint": "^2.7.0",
"eslint": "^6.8.0",
"mocha": "^6.2.2",
"nyc": "^15.0.0",
"supertest": "^4.0.2"
}
}
......@@ -351,7 +351,7 @@ module.exports={
}),
buscarRolTodos: (UsuarioRol, Rol, Usuario, Oficina, condicion) => Usuario.findAll({
where: condicion,
order: 'estado ASC, usuario ASC',
order: [['estado', 'ASC'],[ 'usuario', 'ASC']],
include: [{
model: UsuarioRol,
as: 'usuario_rol',
......
......@@ -12,10 +12,8 @@ const bl = require('../../bl/seguridad/usuarioBL');
module.exports = app => {
const Usuario = app.src.db.models.usuario;
const UsuarioHis = app.src.db.models.usuario_his;
const Rol = app.src.db.models.rol;
const UsuarioRol = app.src.db.models.usuario_rol;
const UsuarioOficina = app.src.db.models.usuario_oficina;
const Oficina = app.src.db.models.oficina;
const director = app.src.config.config.sistema.director;
const direccion = app.src.config.config.sistema.direccion;
......@@ -152,7 +150,7 @@ module.exports = app => {
}
*/
app.get('/api/v1/seguridad/usuario', (req,res) => {
console.log("INICIANDO LA OBTENCION DE DATOS".bgGreen, req.query);
// console.log("INICIANDO LA OBTENCION DE DATOS".bgGreen, req.query);
// Si existe consultas.
if(Object.keys(req.query).length != 0){
if(req.query.limit && req.query.page){
......@@ -166,9 +164,9 @@ module.exports = app => {
req.query.order = `${req.query.order.substring(1, req.query.order.length)} DESC`;
}
}
console.log('Antes del split'.bgMagenta, req.query.order);
// console.log('Antes del split'.bgMagenta, req.query.order);
req.query.order = [req.query.order.split(' ')];
console.log('Despues del split'.bgMagenta, req.query.order);
// console.log('Despues del split'.bgMagenta, req.query.order);
if(req.query.where && req.query.estado) req.query.where.estado={[Op.in]:req.query.estado.split(',')};
else if(req.query.estado) req.query.where= {estado:{[Op.in]:req.query.estado.split(',')}};
......@@ -301,10 +299,10 @@ module.exports = app => {
opciones.attributes = {exclude: ['contrasena']}
}
}
console.log('revisando las condiciones', opciones);
// console.log('revisando las condiciones', opciones);
return Usuario.findAndCountAll(opciones)
.then(resp => {
console.log('Revisando los usuario obtenidos', resp);
// console.log('Revisando los usuario obtenidos', resp);
res.send(util.formatearMensaje("EXITO", "La busqueda fue exitosa", {
total: resp.count,
resultado: resp.rows
......@@ -857,7 +855,7 @@ module.exports = app => {
if(usuarioRespuestaBusqueda){
usuarioRespuesta=usuarioRespuestaBusqueda;
if(usuario.roles && usuario.roles.length>0){
console.log('Eliminando usuario_________________________-');
// console.log('Eliminando usuario_________________________-');
return UsuarioRol.destroy({where: {fid_usuario: req.params.id}},{ transaction: t})
}
}
......@@ -865,7 +863,7 @@ module.exports = app => {
})
// Actualiza la informacion del usuario.
.then(filas => {
console.log('Revisando usuario para actualizar _________________________', usuarioRespuesta);
// console.log('Revisando usuario para actualizar _________________________', usuarioRespuesta);
const actual=JSON.parse(JSON.stringify(usuario));
return usuarioRespuesta.update(usuario,{transaction:t});
})
......@@ -912,7 +910,7 @@ module.exports = app => {
const actualizar = [];
const historico = []
_.map(usuario.virtuales, (item, indice) => {
console.log('-----------------------------------------------------iteracion', indice);
// console.log('-----------------------------------------------------iteracion', indice);
const activos = _.filter(respVirtuales, ['dataValues.estado', 'ACTIVO']);
const inactivos = _.filter(respVirtuales, ['dataValues.estado', 'INACTIVO']);
const tr = { transaction: t };
......@@ -1105,14 +1103,14 @@ module.exports = app => {
],
})
.then(respUsuario => {
console.log('Revisando el usuario obtenido', respUsuario.dataValues);
// console.log('Revisando el usuario obtenido', respUsuario.dataValues);
if (!respUsuario) throw Error('El usuario no puede ser validado en este momento.');
if (!respUsuario.unidad) throw Error('El usuario no es valido, por su unidad.');
if (respUsuario.estado !== 'ACTIVO') throw Error('El usuario no es valido, por el estado de su registro.');
const ci = parseInt(respUsuario.numero_documento);
if ((typeof ci === 'number') && isNaN(ci)) throw Error('El usuario no es valido, por su numero de documento.');
console.log('Respuesta de usuario y unidad');
// console.log('Respuesta de usuario y unidad');
const resp = {
id_usuario: respUsuario.id_usuario,
nombres: respUsuario.nombres,
......
......@@ -5,7 +5,7 @@ module.exports = {
const users = [{
fid_unidad: 1,
usuario: 'sys_default',
contrasena: 'DkqD95U8zNu2yk7LZbVPnvZmp9CUZhWLGgjyxCtC',
contrasena: '672caf27f5363dc833bda5099775e891',
numero_documento: '1111111',
nombres: 'system',
apellidos: 'default ',
......
'use strict';
module.exports = {
diff: true,
require: 'tests/helpers.js',
timeout: 500,
reporter: 'spec',
slow: 75,
};
\ No newline at end of file
const supertest = require('supertest');
const chai = require('chai');
const app = require('../index');
console.log('Cargando helpers');
console.log('===========================================================0');
console.log('===========================================================0');
console.log('===========================================================0');
console.log('===========================================================0');
global.app = app;
global.request = supertest(app);
global.expect = chai.expect;
global.assert = chai.assert;
// before(async () => {
// });
// setTimeout(() => {
// console.log('Antes de ejecutar los test');
// }, 2500);
\ No newline at end of file
describe('____________________________ AUTENTICAR'.yellow, () => {
describe('Ingreso al sistema', () => {
it('GET /autenticar', (done) => {
const credenciales = {
username: 'sys_default',
password: 'Developer',
};
request.post('/autenticar')
.send(credenciales)
.expect(200)
.end((err, res) => {
const expected = 1;
global.usuario = res.body.datos;
global.token = res.body.token;
expect(res.body.datos.user.id).to.equal(expected);
done(err);
});
});
});
});
\ No newline at end of file
describe("____________________________ USUARIO".yellow, () => {
let usuarioSystem = {};
describe('Listar usuarios', () => {
it('GET /api/v1/seguridad/usuario/', (done) => {
request.get('/api/v1/seguridad/usuario')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos).to.have.length(1);
done(err);
});
});
});
describe('Listar usuarios con filter y paginacion', () => {
it('GET /api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres&order=nombres&limit=10&page=1&filter=sys', (done) => {
request.get('/api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres&order=nombres&limit=10&page=1&filter=sys')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos.total).to.equal(1);
done(err);
});
});
});
describe('Listar usuarios con filter y ordenamiento sin resultado', () => {
it('GET /api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres,apellidos&order=-nombres&estado=ACTIVO,INACTIVO&filter=tester', (done) => {
request.get('/api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres,apellidos&order=-nombres&estado=ACTIVO,INACTIVO&filter=tester')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.mensaje).to.equal('No se encontraron registros.');
done(err);
});
});
});
describe('Listar usuarios con error de estado', () => {
it('GET /api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres&estado=ACTIVO,INACTIVO,TEST&order=nombres', (done) => {
request.get('/api/v1/seguridad/usuario/?fields=id_usuario,usuario,nombres&estado=ACTIVO,INACTIVO,TEST&order=nombres')
.set('Authorization', `Bearer ${token}`)
.expect(412)
.end((err, res) => {
done(err);
});
});
});
describe('Obtener un usuario por su identificador', () => {
it('GET /api/v1/seguridad/usuario/:id', (done) => {
request.get('/api/v1/seguridad/usuario/1')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
usuarioSystem = res.body.datos;
expect(res.body.datos.id_usuario).to.equal(1);
done(err);
});
});
});
describe('Obtener un usuario por su identificador con error de no existencia de usuario', () => {
it('GET /api/v1/seguridad/usuario/:id', (done) => {
request.get('/api/v1/seguridad/usuario/100000')
.set('Authorization', `Bearer ${token}`)
.expect(412)
.end((err, res) => {
expect(res.body.mensaje).to.equal('No existe el usuario solicitado.');
done(err);
});
});
});
describe('Obtener un usuario por su número de documento', () => {
it('GET /api/v1/seguridad/usuario_unidad/:ci', (done) => {
request.get(`/api/v1/seguridad/usuario_unidad/${usuarioSystem.numero_documento}`)
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos.numero_documento).to.equal(usuarioSystem.numero_documento);
done(err);
});
});
});
describe('Obtener un catalogo de usuarios', () => {
it('GET /api/v1/seguridad/usuario/catalogo', (done) => {
request.get('/api/v1/seguridad/usuario/catalogo')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos.total).to.equal(1);
done(err);
});
});
});
describe('Obtener un catalogo de usuarios con paginación', () => {
it('GET /api/v1/seguridad/usuario/catalogo?order=nombres&limit=10&page=1', (done) => {
request.get('/api/v1/seguridad/usuario/catalogo?limit=10&page=1')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos.total).to.equal(1);
done(err);
});
});
});
describe('Obtener un catalogo de usuarios con filter', () => {
it('GET /api/v1/seguridad/usuario/catalogo', (done) => {
request.get('/api/v1/seguridad/usuario/catalogo?fields=id_usuario,nombres,apellidos,estado&filter=default')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.datos.total).to.equal(1);
done(err);
});
});
});
describe('Crear un usuario', () => {
it('POST /api/v1/seguridad/usuario/:id', (done) => {
const nuevo = {
"usuario": "juan.perez",
"fid_unidad": 1,
"contrasena": " ",
"numero_documento": "1234567899",
"nombres": "Juan",
"apellidos": "Perez Perez",
"cargo": "tester",
"email": "juan.perez@agetic.gob.bo",
"estado": "ACTIVO",
"roles": [3],
"oficinas": [],
"virtuales": [],
"_usuario_creacion": 35,
"_fecha_creacion": "2020-03-09T20:15:23.509Z"
}
request.post('/api/v1/seguridad/usuario')
.set('Authorization', `Bearer ${token}`)
.send(nuevo)
.expect(201)
.end((err, res) => {
expect(res.body.tipoMensaje).to.equal('EXITO');
done(err);
});
});
});
describe('Modificar un usuario', () => {
it('PUT /api/v1/seguridad/usuario/:id', done => {
const datos = {
apellidos: 'Perez Asturizaga'
};
request.put('/api/v1/seguridad/usuario/2')
.set('Authorization', `Bearer ${token}`)
.send(datos)
.expect(200)
.end((err, res) => {
expect(res.body.datos.apellidos).to.equal(datos.apellidos);
done(err);
});
});
});
describe('Eliminar un usuario', () => {
it('DELETE /api/v1/seguridad/usuario/:id', done => {
request.delete('/api/v1/seguridad/usuario/2')
.set('Authorization', `Bearer ${token}`)
.expect(405)
.end((err, res) => {
expect(res.body.tipoMensaje).to.equal('ERROR');
done(err);
});
});
});
describe('Obtener una lista de usuarios y sus roles', () => {
it('GET /api/v1/seguridad/usuario_rol', (done) => {
request.get('/api/v1/seguridad/usuario_rol?fields=id_usuario,cargo,contrasena')
.set('Authorization', `Bearer ${token}`)
.expect(200)
.end((err, res) => {
expect(res.body.tipoMensaje).to.equal('EXITO');
done(err);
});
});
});
describe('Obtener una lista de usuarios y sus roles con error de field', () => {
it('GET /api/v1/seguridad/usuario_rol', (done) => {
request.get('/api/v1/seguridad/usuario_rol?fields=password')
.set('Authorization', `Bearer ${token}`)
.expect(412)
.end((err, res) => {
expect(res.body.tipoMensaje).to.equal('ERROR');
done(err);
});
});
});
describe('Obtener los usuarios de la unidad del usuario consultado', () => {
it('GET /api/v1/seguridad/usuario/:id/informacion', (done) => {
request.get('/api/v1/seguridad/usuario/1/informacion')
.set('Authorization', `Bearer ${token}`)
.expect(201)
.end((err, res) => {
console.log('##########################');
console.log('##########################');
console.log('##########################');
console.log('##########################', res.body);
expect(res.body.tipoMensaje).to.equal('EXITO');
done(err);
});
});
});
});
\ No newline at end of file