Files
cloudron-box/src/test/digest-test.js

153 lines
4.6 KiB
JavaScript
Raw Normal View History

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'),
maildb = require('../maildb.js'),
2017-07-23 10:53:16 -07:00
mailer = require('../mailer.js'),
mail = require('../mail.js'),
domains = require('../domains.js'),
2017-07-23 10:53:16 -07:00
paths = require('../paths.js'),
safe = require('safetydance'),
settings = require('../settings.js'),
updatechecker = require('../updatechecker.js'),
2018-04-29 10:58:45 -07:00
userdb = require('../userdb.js'),
users = require('../users.js');
2017-07-23 10:53:16 -07:00
// owner
var USER_0 = {
username: 'username0',
password: 'Username0pass?1234',
email: 'user0@email.com',
2018-01-22 11:52:58 +01:00
fallbackEmail: 'user0fallback@email.com',
2017-07-23 10:53:16 -07:00
displayName: 'User 0'
};
2017-11-11 03:06:57 +01:00
const DOMAIN_0 = {
domain: 'example.com',
zoneName: 'example.com',
config: {},
provider: 'manual',
fallbackCertificate: null,
tlsConfig: { provider: 'fallback' }
2017-11-11 03:06:57 +01:00
};
2017-07-23 10:53:16 -07:00
var AUDIT_SOURCE = {
ip: '1.2.3.4'
};
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-11-15 18:36:27 -08:00
if (number) {
expect(mailer._getMailQueue()[0].to).to.equal(email);
}
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,
2018-11-10 00:43:46 -08:00
domains.add.bind(null, DOMAIN_0.domain, DOMAIN_0, AUDIT_SOURCE),
2018-04-03 14:37:52 -07:00
mail.addDomain.bind(null, DOMAIN_0.domain),
2018-04-29 10:58:45 -07:00
users.createOwner.bind(null, USER_0.username, USER_0.password, USER_0.email, USER_0.displayName, AUDIT_SOURCE),
2018-01-22 11:52:58 +01:00
function (callback) {
userdb.getByUsername(USER_0.username, function (error, result) {
if (error) return callback(error);
USER_0.id = result.id;
2018-04-29 10:58:45 -07:00
users.update(USER_0.id, { fallbackEmail: USER_0.fallbackEmail }, AUDIT_SOURCE, callback);
2018-01-22 11:52:58 +01:00
});
},
2017-07-23 10:53:16 -07:00
eventlog.add.bind(null, eventlog.ACTION_UPDATE, AUDIT_SOURCE, { boxUpdateInfo: { sourceTarballUrl: 'xx', version: '1.2.3', changelog: [ 'good stuff' ] } }),
maildb.update.bind(null, DOMAIN_0.domain, { enabled: true }),
2017-07-23 10:53:16 -07:00
mailer._clearMailQueue
], done);
});
after(function (done) {
mailer._clearMailQueue();
safe.fs.unlinkSync(paths.UPDATE_CHECKER_FILE);
async.series([
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) {
2019-02-27 11:56:16 -08:00
digest.send(function (error) {
2017-07-23 10:53:16 -07:00
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) {
2019-02-27 11:56:16 -08:00
digest.send(function (error) {
2017-07-23 10:53:16 -07:00
if (error) return done(error);
checkMails(1, `${USER_0.email}`, 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' } } } });
2019-02-27 11:56:16 -08:00
digest.send(function (error) {
2017-07-23 10:53:16 -07:00
if (error) return done(error);
checkMails(1, `${USER_0.email}`, done);
});
});
it('sends mail for pending update to owner account email', function (done) {
updatechecker._setUpdateInfo({ box: null, apps: { 'appid': { manifest: { version: '1.2.5', changelog: 'noop\nreally' } } } });
maildb.update(DOMAIN_0.domain, { enabled: true }, function (error) {
if (error) return done(error);
2019-02-27 11:56:16 -08:00
digest.send(function (error) {
if (error) return done(error);
checkMails(1, `${USER_0.email}`, done);
});
2017-07-23 10:53:16 -07:00
});
});
});
});