mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
Add additional tests for register route
This commit is contained in:
@@ -98,6 +98,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"chai": "^3.4.0",
|
"chai": "^3.4.0",
|
||||||
|
"chai-as-promised": "^5.1.0",
|
||||||
"coffee-coverage": "~0.4.2",
|
"coffee-coverage": "~0.4.2",
|
||||||
"coveralls": "^2.11.2",
|
"coveralls": "^2.11.2",
|
||||||
"csv": "~0.3.6",
|
"csv": "~0.3.6",
|
||||||
|
|||||||
@@ -1,31 +1,83 @@
|
|||||||
import {requester} from '../../helpers/api.helper';
|
import {
|
||||||
|
generateUser,
|
||||||
|
requester,
|
||||||
|
} from '../../helpers/api.helper';
|
||||||
import {v4 as generateRandomUserName} from 'uuid';
|
import {v4 as generateRandomUserName} from 'uuid';
|
||||||
|
|
||||||
describe('POST /register', () => {
|
describe('POST /register', () => {
|
||||||
let api;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
context('username and email are free', () => {
|
||||||
api = requester();
|
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) => {
|
context('login is already taken', () => {
|
||||||
let username = generateRandomUserName();
|
let username, email;
|
||||||
let email = `${username}@example.com`;
|
beforeEach(() => {
|
||||||
let password = 'password';
|
username = generateRandomUserName();
|
||||||
|
email = `${username}@example.com`;
|
||||||
|
return generateUser({
|
||||||
|
'auth.local.username': username,
|
||||||
|
'auth.local.lowerCaseUsername': username,
|
||||||
|
'auth.local.email': email
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
api.post('/register', {
|
it('rejects if username is already taken', () => {
|
||||||
username: username,
|
let api = requester();
|
||||||
email: email,
|
let uniqueEmail = `${generateRandomUserName()}@exampe.com`;
|
||||||
password: password,
|
let password = 'password';
|
||||||
confirmPassword: password,
|
|
||||||
}).then((user) => {
|
return expect(api.post('/register', {
|
||||||
expect(user._id).to.exist;
|
username: username,
|
||||||
expect(user.auth.local.username).to.eql(username);
|
email: uniqueEmail,
|
||||||
expect(user.auth.local.email).to.eql(`${username}@example.com`);
|
password: password,
|
||||||
done();
|
confirmPassword: password,
|
||||||
})
|
})).to.be.rejectedWith('Username already taken');
|
||||||
.catch((err) => {
|
});
|
||||||
done(err);
|
|
||||||
|
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');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -5,4 +5,5 @@
|
|||||||
global._ = require("lodash")
|
global._ = require("lodash")
|
||||||
global.chai = require("chai")
|
global.chai = require("chai")
|
||||||
chai.use(require("sinon-chai"))
|
chai.use(require("sinon-chai"))
|
||||||
|
chai.use(require("chai-as-promised"));
|
||||||
global.expect = chai.expect
|
global.expect = chai.expect
|
||||||
|
|||||||
Reference in New Issue
Block a user