opt-cc/opt-cc-api/test/users.spec.js

101 lines
2.6 KiB
JavaScript

let mongoose = require("mongoose");
let UserModel = require('../models/user');
let AppUserModel = require('../models/app-user');
//Require the dev-dependencies
let chai = require('chai');
let chaiHttp = require('chai-http');
let server = require('../server');
let should = chai.should();
chai.use(chaiHttp);
//Our parent block
describe('Users', () => {
beforeEach((done) => { //Before each test we empty the database
UserModel.remove({}, (err) => {
done();
});
});
/*
* Test the /GET route
*/
describe('/GET users', () => {
it('it should GET all the users', (done) => {
chai.request(server)
.get('/users')
.end((err, res) => {
res.should.have.status(200);
res.body.should.be.a('array');
res.body.length.should.be.eql(0);
done();
});
});
});
/*
* Test the /POST route
*/
describe('/POST users', () => {
let token;
before(function (done) {
AppUserModel.remove({}, (err) => {
done();
})
});
before(function (done) {
let appUser = {
username: 'testUsr',
password: '$2a$10$i9cBC06uGJnnrqQCh8COkuZLMChLQqw5j4K0yfDQn1udTDAompHka'
};
let appUserEncoded = {
username: appUser.username,
password: 'simplePass'
};
let appUserModel = new AppUserModel(appUser);
appUserModel.save();
chai.request(server)
.post('/authenticate')
.send(appUserEncoded)
.end(function (err, res) {
const result = JSON.parse(res.text);
token = result.token;
done();
});
});
it('it should not POST a user without auth-token in header', (done) => {
chai.request(server)
.post('/users')
.send({})
.end((err, res) => {
res.should.have.status(403);
res.body.should.be.a('object');
res.body.should.have.property('success').eql(false);
res.body.should.have.property('message').eql('No token provided.');
done();
});
});
it('it should POST a user with provided username', (done) => {
const user = {username: 'john'};
chai.request(server)
.post('/users')
.set('x-access-token', token)
.send(user)
.end((err, res) => {
res.should.have.status(201);
res.body.should.be.a('object');
res.body.should.have.property('username').eql(user.username);
res.body.should.have.property('squadId').eql(null);
res.body.should.have.property('rankLvl').eql(0);
done();
});
});
});
});