You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

171 lines
5.3 KiB

/* 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