Add additional tests for register route

This commit is contained in:
Blade Barringer
2015-10-24 22:28:04 -05:00
parent b763aedd29
commit 661d070b56
3 changed files with 75 additions and 21 deletions

View File

@@ -98,6 +98,7 @@
},
"devDependencies": {
"chai": "^3.4.0",
"chai-as-promised": "^5.1.0",
"coffee-coverage": "~0.4.2",
"coveralls": "^2.11.2",
"csv": "~0.3.6",

View File

@@ -1,31 +1,83 @@
import {requester} from '../../helpers/api.helper';
import {
generateUser,
requester,
} from '../../helpers/api.helper';
import {v4 as generateRandomUserName} from 'uuid';
describe('POST /register', () => {
let api;
beforeEach(() => {
api = requester();
context('username and email are free', () => {
it('registers a new user', (done) => {
let api = requester();
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
api.post('/register', {
username: username,
email: email,
password: password,
confirmPassword: password,
}).then((user) => {
expect(user._id).to.exist;
expect(user.apiToken).to.exist;
expect(user.auth.local.username).to.eql(username);
done();
});
});
it('requires password and confirmPassword to match', () => {
let api = requester();
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
let confirmPassword = 'not password';
return expect(api.post('/register', {
username: username,
email: email,
password: password,
confirmPassword: confirmPassword,
})).to.be.rejectedWith(':password and :confirmPassword don\'t match');
});
});
it('registers a new user', (done) => {
let username = generateRandomUserName();
let email = `${username}@example.com`;
let password = 'password';
context('login is already taken', () => {
let username, email;
beforeEach(() => {
username = generateRandomUserName();
email = `${username}@example.com`;
return generateUser({
'auth.local.username': username,
'auth.local.lowerCaseUsername': username,
'auth.local.email': email
});
});
api.post('/register', {
username: username,
email: email,
password: password,
confirmPassword: password,
}).then((user) => {
expect(user._id).to.exist;
expect(user.auth.local.username).to.eql(username);
expect(user.auth.local.email).to.eql(`${username}@example.com`);
done();
})
.catch((err) => {
done(err);
it('rejects if username is already taken', () => {
let api = requester();
let uniqueEmail = `${generateRandomUserName()}@exampe.com`;
let password = 'password';
return expect(api.post('/register', {
username: username,
email: uniqueEmail,
password: password,
confirmPassword: password,
})).to.be.rejectedWith('Username already taken');
});
it('rejects if email is already taken', () => {
let api = requester();
let uniqueUsername = generateRandomUserName();
let password = 'password';
return expect(api.post('/register', {
username: uniqueUsername,
email: email,
password: password,
confirmPassword: password,
})).to.be.rejectedWith('Email already taken');
});
});
});

View File

@@ -5,4 +5,5 @@
global._ = require("lodash")
global.chai = require("chai")
chai.use(require("sinon-chai"))
chai.use(require("chai-as-promised"));
global.expect = chai.expect