Skip to content

Latest commit

 

History

History
374 lines (332 loc) · 11.7 KB

test-unit.md

File metadata and controls

374 lines (332 loc) · 11.7 KB

TOC

User

When signing up 'signup()'

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();
  });
});

When validating an account 'accountValidator()'

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();
});

When checking user password is valid 'isValidUserPassword()'

User not validated

Password is correct

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();
});

User validated

Password is correct

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();
});

Password is not correct

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();
});

When requesting for password reset 'requestResetPassword()'

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();
});

When finding facebook user 'findOrCreateFaceBookUser()'

When user doesn't exists

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();
  });
});

When user exists

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();
    });
  });
});

Mailer

When sending signup confirmation 'sendSignupConfirmation()'

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();
});

When sending account validation confirmation 'sendAccountValidatedConfirmation()'

should call sendMail.

return mailer.sendAccountValidatedConfirmation('en', 'toto@toto.com', function(err, response) {
  should.not.exists(err);
  assert(mailer.sendMail.called);
  return done();
});

When sending request for reseting password 'sendRequestForResetingPassword()'

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();
});

When sending password reset process 'sendPasswordReseted()'

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();
});

When sending contact confirmation 'sendContactConfirmation()'

should call sendMail.

return mailer.sendContactConfirmation('en', 'toto@toto.com', function(err, response) {
  should.not.exists(err);
  assert(mailer.sendMail.called);
  return done();
});

Image

When validating image 'validate()'

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();
});

When creating user directory 'createUserDir()'

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();
  });
});

When saving user picture 'saveUserPicture()'

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();
    });
  });
});