diff --git a/src/mail.js b/src/mail.js index 459070ecc..023049319 100644 --- a/src/mail.js +++ b/src/mail.js @@ -19,6 +19,7 @@ exports = module.exports = { sendTestMail: sendTestMail, getMailboxes: getMailboxes, + removeMailboxes: removeMailboxes, getUserMailbox: getUserMailbox, enableUserMailbox: enableUserMailbox, disableUserMailbox: disableUserMailbox, @@ -848,6 +849,17 @@ function getMailboxes(domain, callback) { }); } +function removeMailboxes(domain, callback) { + assert.strictEqual(typeof domain, 'string'); + assert.strictEqual(typeof callback, 'function'); + + mailboxdb.delByDomain(domain, function (error) { + if (error) return callback(new MailError(MailError.INTERNAL_ERROR, error)); + + callback(); + }); +} + function getUserMailbox(domain, userId, callback) { assert.strictEqual(typeof domain, 'string'); assert.strictEqual(typeof userId, 'string'); diff --git a/src/mailboxdb.js b/src/mailboxdb.js index 06dd63845..8dbc8b0b3 100644 --- a/src/mailboxdb.js +++ b/src/mailboxdb.js @@ -17,6 +17,7 @@ exports = module.exports = { getByOwnerId: getByOwnerId, delByOwnerId: delByOwnerId, + delByDomain: delByDomain, updateName: updateName, @@ -72,6 +73,18 @@ function del(name, domain, callback) { }); } +function delByDomain(domain, callback) { + assert.strictEqual(typeof domain, 'string'); + assert.strictEqual(typeof callback, 'function'); + + // deletes aliases as well + database.query('DELETE FROM mailboxes WHERE domain = ?', [ domain ], function (error) { + if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); + + callback(null); + }); +} + function delByOwnerId(id, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); diff --git a/src/routes/test/mail-test.js b/src/routes/test/mail-test.js index 73b68f9a9..3b577b71e 100644 --- a/src/routes/test/mail-test.js +++ b/src/routes/test/mail-test.js @@ -776,13 +776,17 @@ describe('Mail API', function () { }); after(function (done) { - superagent.del(SERVER_URL + '/api/v1/mail/' + DOMAIN_0.domain) - .send({ password: PASSWORD }) - .query({ access_token: token }) - .end(function (err, res) { - expect(res.statusCode).to.equal(204); - done(); - }); + mail.removeMailboxes(DOMAIN_0.domain, function (error) { + if (error) return done(error); + + superagent.del(SERVER_URL + '/api/v1/mail/' + DOMAIN_0.domain) + .send({ password: PASSWORD }) + .query({ access_token: token }) + .end(function (err, res) { + expect(res.statusCode).to.equal(204); + done(); + }); + }); }); it('set fails if aliases is missing', function (done) { @@ -898,13 +902,17 @@ describe('Mail API', function () { }); after(function (done) { - superagent.del(SERVER_URL + '/api/v1/mail/' + DOMAIN_0.domain) - .send({ password: PASSWORD }) - .query({ access_token: token }) - .end(function (err, res) { - expect(res.statusCode).to.equal(204); - done(); - }); + mail.removeMailboxes(DOMAIN_0.domain, function (error) { + if (error) return done(error); + + superagent.del(SERVER_URL + '/api/v1/mail/' + DOMAIN_0.domain) + .send({ password: PASSWORD }) + .query({ access_token: token }) + .end(function (err, res) { + expect(res.statusCode).to.equal(204); + done(); + }); + }); }); it('add fails without groupId', function (done) {