/* eslint-env mocha */ /* eslint no-unused-expressions: 0 */ const chai = require('chai') const chaiHttp = require('chai-http') const expect = chai.expect const jwt = require('jsonwebtoken') const CFG = require('../../config') chai.use(chaiHttp) describe('Session - Router', function () { describe('# login', function () { it('POST /session/login with unknown user', function (done) { chai.request(global.server) .post('/session/login') .send({user: 'airpmpA', pass: 'admin'}) .end((err, res) => { expect(err).to.be.null expect(res).to.have.status(401) expect(res.body).to.have.property('error', 'User:NotFound') done() }) }) it('POST /session/login with wrong password', function (done) { chai.request(global.server) .post('/session/login') .send({user: 'airpmp', pass: 'toto'}) .end((err, res) => { expect(err).to.be.null expect(res).to.have.status(401) expect(res.body).to.have.property('error', 'User:WrongPassword') done() }) }) it('POST /session/login', function (done) { chai.request(global.server) .post('/session/login') .send(global.login) .end((err, res) => { // console.log(res.body) expect(err).to.be.null expect(res).to.have.status(200) expect(res.body).to.have.nested.property('user.username', global.login.user) expect(res.body).to.have.property('jwtAuth') global.jwtAuth = res.body.jwtAuth done() }) }) it('POST /session/access with no jwtAuth', function (done) { chai.request(global.server) .post('/session/access') .send({}) .end((err, res) => { expect(err).to.be.null expect(res).to.have.status(401) done() }) }) it('POST /session/access', function (done) { chai.request(global.server) .post('/session/access') .send({jwtAuth: global.jwtAuth}) .end((err, res) => { expect(err).to.be.null expect(res).to.have.status(200) expect(res.body).to.have.property('jwtAuth') expect(res.body).to.have.property('jwtAccess') let clearToken = jwt.decode(res.body.jwtAccess) expect(clearToken).to.have.nested.property('data.user.rights') global.jwtAuth = res.body.jwtAuth global.jwtAccess = res.body.jwtAccess done() }) }) it('POST /session/access with updated jwtAuth', function (done) { chai.request(global.server) .post('/session/access') .send({jwtAuth: global.jwtAuth}) .end((err, res) => { expect(err).to.be.null expect(res).to.have.status(200) expect(res.body).to.have.property('jwtAuth') expect(res.body).to.have.property('jwtAccess') global.jwtAuth = res.body.jwtAuth global.jwtAccess = res.body.jwtAccess done() }) }) }) describe('# session me', function () { it('GET /session/me with no jwtAccess', function (done) { chai.request(global.server) .get('/session/me') .end((err, res) => { expect(err).to.be.null if (CFG.jwt.enable) { expect(res).to.have.status(401) } done() }) }) it('GET /session/me', function (done) { chai.request(global.server) .get('/session/me') .set('token', global.jwtAccess) .end((err, res) => { // console.log(res.body) expect(err).to.be.null expect(res.body).to.not.have.property('error') expect(res).to.have.status(200) done() }) }) }) describe('# session - my filters', function () { let createdFilter = null it('GET /session/me/filters', function (done) { chai.request(global.server) .get('/session/me/filters') .set('token', global.jwtAccess || '') .end((err, res) => { // console.log(res.body) expect(err).to.be.null // expect(res.body).to.have.property('data') // expect(res.body).to.not.have.property('error') expect(res).to.have.status(200) done() }) }) it('CREATE /session/me/filters', function (done) { chai.request(global.server) .post('/session/me/filters') .set('token', global.jwtAccess || '') .send({name: 'test-test', rules: {test: ''}}) .end((err, res) => { expect(err).to.be.null // expect(res.body).to.have.property('data') // expect(res.body).to.not.have.property('error') expect(res).to.have.status(200) createdFilter = res.body.doc done() }) }) it('DELETE users-filters by api', function (done) { chai.request(global.server) .delete('/api/users-filters/' + createdFilter._id) .set('token', global.jwtAccess || '') .end((err, res) => { expect(err).to.be.null // expect(res.body).to.have.property('data') // expect(res.body).to.not.have.property('error') expect(res).to.have.status(200) done() }) }) }) }) // https://scotch.io/tutorials/test-a-node-restful-api-with-mocha-and-chai