1
0
mirror of https://github.com/Foltik/Shimapan synced 2024-11-27 21:19:09 -05:00

Change response code, add length test, verify user and invite are processed correctly

This commit is contained in:
Jack Foltz 2018-07-25 01:44:45 -04:00
parent 883ec62c7a
commit 1fdb121260
Signed by: foltik
GPG Key ID: 303F88F996E95541
2 changed files with 21 additions and 6 deletions

View File

@ -44,7 +44,7 @@ describe('Users', function() {
const create = invite ? util.createInvite : (invite, cb) => cb(); const create = invite ? util.createInvite : (invite, cb) => cb();
async.series([ async.series([
(cb) => create(invite, cb), (cb) => create(invite, cb),
(cb) => util.verifyFailedRegister(user, message, 401, cb) (cb) => util.verifyFailedRegister(user, message, 422, cb)
], done); ], done);
}; };
@ -75,7 +75,7 @@ describe('Users', function() {
const user1 = {username: 'user', password: 'diff', invite: 'code1'}; const user1 = {username: 'user', password: 'diff', invite: 'code1'};
async.series([ async.series([
(cb) => util.verifySuccessfulRegister(user0, cb), (cb) => util.verifySuccessfulRegister(user0, cb),
(cb) => util.verifyFailedRegister(user1, 'Username in use.', 401, cb) (cb) => util.verifyFailedRegister(user1, 'Username in use.', 422, cb)
], done); ], done);
}); });
@ -84,7 +84,7 @@ describe('Users', function() {
const user1 = {username: 'ᴮᴵᴳᴮᴵᴿᴰ', password: 'diff', invite: 'code1'}; const user1 = {username: 'ᴮᴵᴳᴮᴵᴿᴰ', password: 'diff', invite: 'code1'};
async.series([ async.series([
(cb) => util.verifySuccessfulRegister(user0, cb), (cb) => util.verifySuccessfulRegister(user0, cb),
(cb) => util.verifyFailedRegister(user1, 'Username in use.', 401, cb) (cb) => util.verifyFailedRegister(user1, 'Username in use.', 422, cb)
], done); ], done);
}); });
@ -95,13 +95,18 @@ describe('Users', function() {
{username: 'user name', password: 'pass', invite: 'code2'} {username: 'user name', password: 'pass', invite: 'code2'}
]; ];
const failMsg = 'Username contains invalid characters.'; const failMsg = 'Username contains invalid characters.';
async.each(users, (user, cb) => util.verifyFailedRegister(user, failMsg, 401, cb), done); async.each(users, (user, cb) => util.verifyFailedRegister(user, failMsg, 422, cb), done);
}); });
it('MUST NOT register a username containing HTML', function(done) { it('MUST NOT register a username containing HTML', function(done) {
const user = {username: 'user<svg/onload=alert("XSS")>', password: 'pass', invite: 'code0'}; const user = {username: 'user<svg/onload=alert("XSS")>', password: 'pass', invite: 'code0'};
util.verifyFailedRegister(user, 'Username contains invalid characters.', 401, done); util.verifyFailedRegister(user, 'Username contains invalid characters.', 422, done);
}); });
it('MUST NOT register a username with too many characters', function(done) {
const user = {username: '123456789_123456789_123456789_1234567', password: 'pass', invite: 'code0'};
util.verifyFailedRegister(user, 'Username too long.', 422, done);
})
}); });
}); });

View File

@ -18,6 +18,10 @@ var expect = chai.expect;
chai.use(http); chai.use(http);
//TODO: BAD! Move to a util file!
// Normalizes, decomposes, and lowercases a utf-8 string
const canonicalizeUsername = username => username.normalize('NFKD').toLowerCase();
//---------------- DATABASE UTIL ----------------// //---------------- DATABASE UTIL ----------------//
var resetDatabase = function(cb) { var resetDatabase = function(cb) {
@ -63,8 +67,14 @@ const verifySuccessfulRegister = function(user, done) {
res.should.have.status(200); res.should.have.status(200);
res.body.should.be.a('object'); res.body.should.be.a('object');
res.body.should.have.property('message').eql('Registration successful.'); res.body.should.have.property('message').eql('Registration successful.');
User.countDocuments({username: user.username}, function(err, count) {
count.should.eql(1);
Invite.countDocuments({recipient: canonicalizeUsername(user.username)}, function(err, count) {
count.should.eql(1);
done(); done();
}); });
});
});
}; };
const verifyFailedRegister = function(user, message, status, done) { const verifyFailedRegister = function(user, message, status, done) {