2017-07-23 10:53:16 -07:00
|
|
|
/* global it:false */
|
|
|
|
|
/* global describe:false */
|
|
|
|
|
/* global before:false */
|
|
|
|
|
/* global after:false */
|
|
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
|
|
var async = require('async'),
|
|
|
|
|
config = require('../config.js'),
|
|
|
|
|
database = require('../database.js'),
|
|
|
|
|
digest = require('../digest.js'),
|
|
|
|
|
eventlog = require('../eventlog.js'),
|
|
|
|
|
expect = require('expect.js'),
|
2018-01-20 18:56:17 -08:00
|
|
|
mail = require('../mail.js'),
|
2018-01-21 00:27:28 -08:00
|
|
|
maildb = require('../maildb.js'),
|
2017-07-23 10:53:16 -07:00
|
|
|
mailer = require('../mailer.js'),
|
|
|
|
|
paths = require('../paths.js'),
|
|
|
|
|
safe = require('safetydance'),
|
|
|
|
|
settings = require('../settings.js'),
|
2017-11-02 14:35:16 -07:00
|
|
|
settingsdb = require('../settingsdb.js'),
|
2017-07-23 10:53:16 -07:00
|
|
|
updatechecker = require('../updatechecker.js'),
|
|
|
|
|
user = require('../user.js');
|
|
|
|
|
|
|
|
|
|
// owner
|
|
|
|
|
var USER_0 = {
|
|
|
|
|
username: 'username0',
|
|
|
|
|
password: 'Username0pass?1234',
|
|
|
|
|
email: 'user0@email.com',
|
|
|
|
|
displayName: 'User 0'
|
|
|
|
|
};
|
|
|
|
|
|
2017-11-11 03:06:57 +01:00
|
|
|
const DOMAIN_0 = {
|
|
|
|
|
domain: 'example.com',
|
|
|
|
|
zoneName: 'example.com',
|
|
|
|
|
config: { provider: 'manual' }
|
|
|
|
|
};
|
|
|
|
|
|
2017-07-23 10:53:16 -07:00
|
|
|
var AUDIT_SOURCE = {
|
|
|
|
|
ip: '1.2.3.4'
|
|
|
|
|
};
|
|
|
|
|
|
2017-09-19 21:07:59 +02:00
|
|
|
function checkMails(number, email, done) {
|
2017-07-23 10:53:16 -07:00
|
|
|
// mails are enqueued async
|
|
|
|
|
setTimeout(function () {
|
|
|
|
|
expect(mailer._getMailQueue().length).to.equal(number);
|
2017-09-19 21:07:59 +02:00
|
|
|
|
2017-11-15 18:36:27 -08:00
|
|
|
if (number) {
|
|
|
|
|
expect(mailer._getMailQueue()[0].to).to.equal(email);
|
2017-09-19 21:07:59 +02:00
|
|
|
}
|
|
|
|
|
|
2017-07-23 10:53:16 -07:00
|
|
|
mailer._clearMailQueue();
|
|
|
|
|
done();
|
|
|
|
|
}, 500);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
describe('digest', function () {
|
|
|
|
|
before(function (done) {
|
|
|
|
|
config._reset();
|
2017-11-15 18:36:27 -08:00
|
|
|
config.set('fqdn', 'domain.com');
|
2017-07-23 10:53:16 -07:00
|
|
|
config.set('apiServerOrigin', 'http://localhost:4444');
|
|
|
|
|
config.set('provider', 'notcaas');
|
2017-11-11 03:06:57 +01:00
|
|
|
config.setFqdn(DOMAIN_0.domain);
|
2017-07-23 10:53:16 -07:00
|
|
|
safe.fs.unlinkSync(paths.UPDATE_CHECKER_FILE);
|
|
|
|
|
|
|
|
|
|
async.series([
|
|
|
|
|
database.initialize,
|
|
|
|
|
database._clear,
|
|
|
|
|
settings.initialize,
|
|
|
|
|
user.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE),
|
|
|
|
|
eventlog.add.bind(null, eventlog.ACTION_UPDATE, AUDIT_SOURCE, { boxUpdateInfo: { sourceTarballUrl: 'xx', version: '1.2.3', changelog: [ 'good stuff' ] } }),
|
2018-01-21 00:27:28 -08:00
|
|
|
maildb.update.bind(null, DOMAIN_0.domain, { enabled: true }),
|
2017-07-23 10:53:16 -07:00
|
|
|
mailer._clearMailQueue
|
|
|
|
|
], done);
|
|
|
|
|
});
|
|
|
|
|
|
2017-11-27 11:48:36 -08:00
|
|
|
after(function (done) {
|
|
|
|
|
mailer._clearMailQueue();
|
|
|
|
|
safe.fs.unlinkSync(paths.UPDATE_CHECKER_FILE);
|
|
|
|
|
|
|
|
|
|
async.series([
|
|
|
|
|
settings.uninitialize,
|
|
|
|
|
database._clear,
|
|
|
|
|
database.uninitialize
|
|
|
|
|
], done);
|
|
|
|
|
});
|
2017-07-23 10:53:16 -07:00
|
|
|
|
|
|
|
|
describe('disabled', function () {
|
|
|
|
|
before(function (done) {
|
|
|
|
|
settings.setEmailDigest(false, done);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('does not send mail with digest disabled', function (done) {
|
|
|
|
|
digest.maybeSend(function (error) {
|
|
|
|
|
if (error) return done(error);
|
2017-11-15 18:36:27 -08:00
|
|
|
checkMails(0, null, done);
|
2017-07-23 10:53:16 -07:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe('enabled', function () {
|
|
|
|
|
before(function (done) {
|
|
|
|
|
settings.setEmailDigest(true, done);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('sends mail for box update', function (done) {
|
|
|
|
|
digest.maybeSend(function (error) {
|
|
|
|
|
if (error) return done(error);
|
|
|
|
|
|
2017-11-15 18:36:27 -08:00
|
|
|
checkMails(1, `${USER_0.email}, ${USER_0.username}@${config.fqdn()}`, done);
|
2017-07-23 10:53:16 -07:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it('sends mail for pending update', function (done) {
|
|
|
|
|
updatechecker._setUpdateInfo({ box: null, apps: { 'appid': { manifest: { version: '1.2.5', changelog: 'noop\nreally' } } } });
|
|
|
|
|
|
|
|
|
|
digest.maybeSend(function (error) {
|
|
|
|
|
if (error) return done(error);
|
|
|
|
|
|
2017-11-15 18:36:27 -08:00
|
|
|
checkMails(1, `${USER_0.email}, ${USER_0.username}@${config.fqdn()}`, done);
|
2017-09-19 21:07:59 +02:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2017-11-02 14:35:16 -07:00
|
|
|
it('sends mail for pending update to owner account email', function (done) {
|
2017-09-19 21:07:59 +02:00
|
|
|
updatechecker._setUpdateInfo({ box: null, apps: { 'appid': { manifest: { version: '1.2.5', changelog: 'noop\nreally' } } } });
|
|
|
|
|
|
2018-01-21 00:27:28 -08:00
|
|
|
maildb.update(DOMAIN_0.domain, { enabled: true }, function (error) {
|
2017-09-19 21:07:59 +02:00
|
|
|
if (error) return done(error);
|
|
|
|
|
|
|
|
|
|
digest.maybeSend(function (error) {
|
|
|
|
|
if (error) return done(error);
|
|
|
|
|
|
2017-11-11 03:06:57 +01:00
|
|
|
checkMails(1, `${USER_0.email}, ${USER_0.username}@${DOMAIN_0.domain}`, done);
|
2017-09-19 21:07:59 +02:00
|
|
|
});
|
2017-07-23 10:53:16 -07:00
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|