- User
- Mailer
- When sending signup confirmation 'sendSignupConfirmation()'
- When sending account validation confirmation 'sendAccountValidatedConfirmation()'
- When sending request for reseting password 'sendRequestForResetingPassword()'
- When sending password reset process 'sendPasswordReseted()'
- When sending contact confirmation 'sendContactConfirmation()'
- Image
should create a user and set validated to false.
var email;
email = 'toto@toto.com';
return User.signup(email, 'passwd', 'fr', function(err) {
should.not.exist(err);
return User.find({}, function(err, users) {
users.length.should.equal(1);
users[0].email.should.equal(email);
should.exist(users[0].salt);
should.exist(users[0].passwordHash);
users[0].validated.should.equal(false);
should.exist(users[0].validationKey);
return done();
});
});
should not be possible to create a user with the same email.
var email;
email = 'toto@toto.com';
return User.signup(email, 'passwd', 'fr', function(err) {
return User.signup(email, 'other-passwd', 'fr', function(err) {
should.exist(err);
return done();
});
});
should valid account.
var email, userTest;
email = 'toto@toto.com';
userTest = {};
return async.series([
function(callback) {
return User.signup(email, 'passwd', 'fr', function(err, user) {
userTest = user;
return callback();
});
}, function(callback) {
return User.accountValidator(userTest.validationKey, callback);
}, function(callback) {
return User.findOne({
email: email
}, function(err, user) {
user.validated.should.equal(true);
should.not.exist(user.validationKey);
return done();
});
}
], done);
should fails if validationKey doesn't exist.
return User.accountValidator('key-not-exists', function(err, user) {
should.exist(err);
return done();
});
should not valid user password.
return User.isValidUserPassword(email, passwd, function(err, data, msg) {
should.not.exist(err);
should.exist(msg);
assert.equal(false, data);
assert.deepEqual(msg, {
message: 'Account not validated.'
});
return done();
});
should valid user password.
return User.isValidUserPassword(email, passwd, function(err, data, msg) {
should.not.exist(err);
should.not.exist(msg);
assert.equal(user.email, data.email);
return done();
});
should not valid user password.
return User.isValidUserPassword(email, 'badpasswd', function(err, data, msg) {
should.not.exist(err);
should.exist(msg);
assert.equal(false, data);
assert.deepEqual(msg, {
message: 'Incorrect password.'
});
return done();
});
should set required fields for forgot password process.
return user.requestResetPassword(function(err, modifedUser) {
should.not.exist(err);
should.exist(modifedUser.regeneratePasswordKey);
should.exist(modifedUser.regeneratePasswordDate);
return done();
});
should create facebook user.
return User.findOrCreateFaceBookUser(profile, function(err, user) {
should.not.exist(err);
return User.find({}, function(err, users) {
users.length.should.equal(1);
users[0].email.should.equal(email);
users[0].validated.should.equal(true);
return done();
});
});
should retrieve facebook user.
return User.findOrCreateFaceBookUser(profile, function(err, user) {
var userId;
should.not.exist(err);
userId = user._id;
return User.findOrCreateFaceBookUser(profile, function(err, user) {
should.not.exist(err);
assert.deepEqual(userId, user._id);
return User.find({}, function(err, users) {
users.length.should.equal(1);
users[0].email.should.equal(email);
return done();
});
});
});
should call sendMail.
return mailer.sendSignupConfirmation('en', 'toto@toto.com', 'http://dummy-url.com', function(err, response) {
should.not.exists(err);
assert(mailer.sendMail.called);
return done();
});
should call sendMail.
return mailer.sendAccountValidatedConfirmation('en', 'toto@toto.com', function(err, response) {
should.not.exists(err);
assert(mailer.sendMail.called);
return done();
});
should call sendMail.
return mailer.sendRequestForResetingPassword('en', 'toto@toto.com', 'http://dummy-url.com', function(err, response) {
should.not.exists(err);
assert(mailer.sendMail.called);
return done();
});
should call sendMail.
return mailer.sendPasswordReseted('en', 'toto@toto.com', 'http://dummy-url.com', function(err, response) {
should.not.exists(err);
assert(mailer.sendMail.called);
return done();
});
should call sendMail.
return mailer.sendContactConfirmation('en', 'toto@toto.com', function(err, response) {
should.not.exists(err);
assert(mailer.sendMail.called);
return done();
});
should validate when file is correct.
return image.validate({
size: 30,
name: 'dummy.jpg'
}, function(err) {
should.not.exists(err);
return done();
});
should fails when file too small.
return image.validate({
size: 0,
name: 'dummy.jpg'
}, function(err) {
should.exists(err);
assert.equal('File is too small', err.message);
return done();
});
should fails when file too big.
return image.validate({
size: 20000000,
name: 'dummy.jpg'
}, function(err) {
should.exists(err);
assert.equal('File is too big', err.message);
return done();
});
should validate when file name is not allowed.
return image.validate({
size: 30,
name: 'dummy'
}, function(err) {
should.exists(err);
assert.equal('Filetype not allowed', err.message);
return done();
});
should create user directories.
return image.createUserDir(userTest, testDir, function(err) {
should.not.exists(err);
return fs.exists(testDir + '/user/' + userTest._id + '/picture/thumbnail', function(exists) {
assert.ok(exists);
return done();
});
});
should save image in user directories.
var file;
file = {
size: 30,
name: fileName,
path: filePath,
type: 'image/jpeg'
};
return image.saveUserPicture(userTest, file, function(err, pictureInfo) {
var checkExists, expectedPictureInfo;
should.not.exists(err);
expectedPictureInfo = {
name: file.name,
size: file.size,
thumbnailUrl: 'user/' + userTest._id + '/picture/thumbnail/homer.jpg',
type: file.type,
url: 'user/' + userTest._id + '/picture/thumbnail/homer.jpg'
};
assert.deepEqual(expectedPictureInfo, pictureInfo);
checkExists = function(file, next) {
return fs.exists(file, function(exists) {
assert.ok(exists, file + ' doesn\'t exist');
return next();
});
};
return async.eachSeries([testDir + '/user/' + userTest._id + '/picture/thumbnail', testDir + '/user/' + userTest._id + '/picture/thumbnail/homer.jpg'], checkExists, function(err) {
should.not.exists(err);
return User.findOne({
email: userEmail
}, function(err, user) {
should.not.exists(err);
assert.equal(fileName, user.picture);
return done();
});
});
});