diff --git a/src/config.js b/src/config.js index 8a6c04c4d..5f178521f 100644 --- a/src/config.js +++ b/src/config.js @@ -100,6 +100,7 @@ function initConfig() { name: 'boxtest' }; data.token = 'APPSTORE_TOKEN'; + data.adminEmail = 'test@cloudron.foo'; } else { assert(false, 'Unknown environment. This should not happen!'); } diff --git a/src/mailer.js b/src/mailer.js index 2f967e223..dd4304033 100644 --- a/src/mailer.js +++ b/src/mailer.js @@ -13,6 +13,7 @@ exports = module.exports = { boxUpdateAvailable: boxUpdateAvailable, appUpdateAvailable: appUpdateAvailable, + sendInvite: sendInvite, sendCrashNotification: sendCrashNotification, appDied: appDied, @@ -173,6 +174,9 @@ function sendMails(queue) { function enqueue(mailOptions) { assert.strictEqual(typeof mailOptions, 'object'); + if (!mailOptions.from) console.error('from is missing'); + if (!mailOptions.to) console.error('to is missing'); + debug('Queued mail for ' + mailOptions.from + ' to ' + mailOptions.to); gMailQueue.push(mailOptions); @@ -217,11 +221,11 @@ function mailUserEventToAdmins(user, event) { }); } -function userAdded(user, invitor) { +function sendInvite(user, invitor) { assert.strictEqual(typeof user, 'object'); assert(typeof invitor === 'object'); - debug('Sending mail for userAdded'); + debug('Sending invite mail'); var templateData = { user: user, @@ -240,6 +244,12 @@ function userAdded(user, invitor) { }; enqueue(mailOptions); +} + +function userAdded(user) { + assert.strictEqual(typeof user, 'object'); + + debug('Sending mail for userAdded'); mailUserEventToAdmins(user, 'was added'); } diff --git a/src/routes/test/user-test.js b/src/routes/test/user-test.js index a2612370f..e19fe3aaf 100644 --- a/src/routes/test/user-test.js +++ b/src/routes/test/user-test.js @@ -266,7 +266,7 @@ describe('User API', function () { .end(function (err, res) { expect(err).to.not.be.ok(); expect(res.statusCode).to.equal(200); - checkMails(2, done); + checkMails(1, done); }); }); diff --git a/src/test/user-test.js b/src/test/user-test.js index b98885cd5..194c203f0 100644 --- a/src/test/user-test.js +++ b/src/test/user-test.js @@ -81,7 +81,8 @@ describe('User', function () { expect(result.username).to.equal(USERNAME); expect(result.email).to.equal(EMAIL); - checkMails(2, done); + // first user is owner, do not send mail to admins + checkMails(1, done); }); }); @@ -336,7 +337,8 @@ describe('User', function () { user.changeAdmin(user1.username, true, function (error) { expect(error).to.not.be.ok(); - checkMails(1, done); + // one mail for user creation, one mail for admin change + checkMails(2, done); }); }); }); @@ -383,7 +385,8 @@ describe('User', function () { expect(admins[0].username).to.equal(USERNAME); expect(admins[1].username).to.equal(user1.username); - checkMails(1, done); + // one mail for user creation one mail for admin change + checkMails(2, done); }); }); }); @@ -504,7 +507,7 @@ describe('User', function () { it('succeeds', function (done) { user.sendInvite(userObject.id, function (error) { expect(error).to.eql(null); - checkMails(2, done); + checkMails(1, done); }); }); }); diff --git a/src/user.js b/src/user.js index 7dec3360e..069f13c9c 100644 --- a/src/user.js +++ b/src/user.js @@ -157,7 +157,9 @@ function createUser(username, password, email, admin, invitor, sendInvite, callb callback(null, user); - if (sendInvite) mailer.userAdded(user, invitor); + // do not send email for admins (this can only be the case for the owner) + if (!admin) mailer.userAdded(user); + if (sendInvite) mailer.sendInvite(user, invitor); }); }); }); @@ -416,7 +418,7 @@ function sendInvite(userId, 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)); - mailer.userAdded(userObject, null); + mailer.sendInvite(userObject, null); callback(null); });