diff --git a/src/test/user-test.js b/src/test/user-test.js index b3ed51df7..2eaa116df 100644 --- a/src/test/user-test.js +++ b/src/test/user-test.js @@ -887,6 +887,18 @@ describe('User', function () { }); }); + it('can set aliases', function (done) { + user.setAliases(userObject.id, [ 'everything', 'is', 'awesome' ], function (error) { + expect(error).to.be(null); + + mailboxdb.getAliasesByName(USERNAME.toLowerCase(), function (error, results) { + expect(error).to.be(null); + expect(results.length).to.be(3); + done(); + }); + }); + }); + it('can remove valid user', function (done) { user.remove(userObject.id, { }, function (error) { expect(error).to.be(null); @@ -894,12 +906,16 @@ describe('User', function () { }); }); - it('did delete mailbox', function (done) { + it('did delete mailbox and aliases', function (done) { mailboxdb.getMailbox(userObject.username.toLowerCase(), function (error, mailbox) { expect(error.reason).to.be(DatabaseError.NOT_FOUND); - done(); + + mailboxdb.getAliasesByName(USERNAME.toLowerCase(), function (error, results) { + expect(error).to.be(null); + expect(results.length).to.be(0); + done(); + }); }); }); - }); }); diff --git a/src/user.js b/src/user.js index 2edba3ab1..a35b45fa7 100644 --- a/src/user.js +++ b/src/user.js @@ -285,7 +285,7 @@ function removeUser(userId, auditSource, callback) { eventlog.add(eventlog.ACTION_USER_REMOVE, auditSource, { userId: userId }); - if (user.username) mailboxdb.delByOwnerId(user.id, callback); else callback(); + asyncIf(!!user.username, mailboxdb.delByOwnerId.bind(null, user.id), callback); mailer.userRemoved(user); }); @@ -588,6 +588,8 @@ function setAliases(userId, aliases, callback) { if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND)); if (error) return callback(new UserError(UserError.INTERNAL_ERROR, error)); + if (!user.username) return new UserError(UserError.BAD_FIELD, 'Username must be set before settings aliases'); + mailboxdb.setAliasesByName(user.username, aliases, function (error) { if (error && error.reason === DatabaseError.ALREADY_EXISTS) return callback(new UserError(UserError.ALREADY_EXISTS, error.message)); if (error && error.reason === DatabaseError.NOT_FOUND) return callback(new UserError(UserError.NOT_FOUND));