Add check for undefined user email in setter

This commit is contained in:
Kevin Scroggins 2018-01-29 13:03:40 -05:00
parent 3e3092c017
commit b2bc449e24
2 changed files with 23 additions and 10 deletions

View File

@ -1061,7 +1061,7 @@ module.exports = function(User) {
this.settings.ttl = this.settings.ttl || DEFAULT_TTL;
UserModel.setter.email = function(value) {
if (!UserModel.settings.caseSensitiveEmail) {
if (!UserModel.settings.caseSensitiveEmail && typeof value === 'string') {
this.$email = value.toLowerCase();
} else {
this.$email = value;

View File

@ -138,16 +138,29 @@ describe('User', function() {
});
});
it('Email is required', function(done) {
User.create({password: '123'}, function(err) {
assert(err);
assert.equal(err.name, 'ValidationError');
assert.equal(err.statusCode, 422);
assert.equal(err.details.context, User.modelName);
assert.deepEqual(err.details.codes.email, ['presence']);
it('fails when the required email is missing (case-sensitivity on)', () => {
User.create({password: '123'})
.then(
success => { throw new Error('create should have failed'); },
err => {
expect(err.name).to.equal('ValidationError');
expect(err.statusCode).to.equal(422);
expect(err.details.context).to.equal(User.modelName);
expect(err.details.codes.email).to.deep.equal(['presence']);
});
});
done();
});
it('fails when the required email is missing (case-sensitivity off)', () => {
User.settings.caseSensitiveEmail = false;
User.create({email: undefined, password: '123'})
.then(
success => { throw new Error('create should have failed'); },
err => {
expect(err.name).to.equal('ValidationError');
expect(err.statusCode).to.equal(422);
expect(err.details.context).to.equal(User.modelName);
expect(err.details.codes.email).to.deep.equal(['presence']);
});
});
// will change in future versions where password will be optional by default