Skip to content

Commit b2bc449

Browse files
committed
Add check for undefined user email in setter
1 parent 3e3092c commit b2bc449

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

common/models/user.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,7 @@ module.exports = function(User) {
10611061
this.settings.ttl = this.settings.ttl || DEFAULT_TTL;
10621062

10631063
UserModel.setter.email = function(value) {
1064-
if (!UserModel.settings.caseSensitiveEmail) {
1064+
if (!UserModel.settings.caseSensitiveEmail && typeof value === 'string') {
10651065
this.$email = value.toLowerCase();
10661066
} else {
10671067
this.$email = value;

test/user.test.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -138,16 +138,29 @@ describe('User', function() {
138138
});
139139
});
140140

141-
it('Email is required', function(done) {
142-
User.create({password: '123'}, function(err) {
143-
assert(err);
144-
assert.equal(err.name, 'ValidationError');
145-
assert.equal(err.statusCode, 422);
146-
assert.equal(err.details.context, User.modelName);
147-
assert.deepEqual(err.details.codes.email, ['presence']);
141+
it('fails when the required email is missing (case-sensitivity on)', () => {
142+
User.create({password: '123'})
143+
.then(
144+
success => { throw new Error('create should have failed'); },
145+
err => {
146+
expect(err.name).to.equal('ValidationError');
147+
expect(err.statusCode).to.equal(422);
148+
expect(err.details.context).to.equal(User.modelName);
149+
expect(err.details.codes.email).to.deep.equal(['presence']);
150+
});
151+
});
148152

149-
done();
150-
});
153+
it('fails when the required email is missing (case-sensitivity off)', () => {
154+
User.settings.caseSensitiveEmail = false;
155+
User.create({email: undefined, password: '123'})
156+
.then(
157+
success => { throw new Error('create should have failed'); },
158+
err => {
159+
expect(err.name).to.equal('ValidationError');
160+
expect(err.statusCode).to.equal(422);
161+
expect(err.details.context).to.equal(User.modelName);
162+
expect(err.details.codes.email).to.deep.equal(['presence']);
163+
});
151164
});
152165

153166
// will change in future versions where password will be optional by default

0 commit comments

Comments
 (0)