79 lines
2.9 KiB
JavaScript
79 lines
2.9 KiB
JavaScript
/* jslint node:true */
|
|
/* global it:false */
|
|
/* global describe:false */
|
|
/* global before:false */
|
|
/* global after:false */
|
|
|
|
'use strict';
|
|
|
|
const backupTargets = require('../backuptargets.js'),
|
|
BoxError = require('../boxerror.js'),
|
|
common = require('./common.js'),
|
|
constants = require('../constants.js'),
|
|
expect = require('expect.js'),
|
|
safe = require('safetydance');
|
|
|
|
describe('backups', function () {
|
|
const { setup, cleanup } = common;
|
|
|
|
before(async function () {
|
|
await setup();
|
|
});
|
|
after(cleanup);
|
|
|
|
let defaultBackupTarget = null;
|
|
|
|
it('can list backup targets', async function () {
|
|
const result = await backupTargets.list(1, 5);
|
|
expect(result.length).to.be(1);
|
|
defaultBackupTarget = result[0];
|
|
});
|
|
|
|
it('can get backup target', async function () {
|
|
const backupTarget = await backupTargets.get(defaultBackupTarget.id);
|
|
expect(backupTarget.config.provider).to.be('filesystem');
|
|
expect(backupTarget.config.backupFolder).to.be.ok(); // the test sets this to some tmp location
|
|
expect(backupTarget.format).to.be('tgz');
|
|
expect(backupTarget.encryption).to.be(null);
|
|
});
|
|
|
|
it('cannot get random backup target', async function () {
|
|
const backupTarget = await backupTargets.get('random');
|
|
expect(backupTarget).to.be(null);
|
|
});
|
|
|
|
it('can set backup config', async function () {
|
|
const newConfig = Object.assign({}, defaultBackupTarget.config, { backupFolder: '/tmp/backups' });
|
|
await backupTargets.setConfig(defaultBackupTarget, newConfig);
|
|
|
|
const result = await backupTargets.get(defaultBackupTarget.id);
|
|
expect(result.config.backupFolder).to.be('/tmp/backups');
|
|
});
|
|
|
|
it('cannot set invalid schedule', async function () {
|
|
const [error] = await safe(backupTargets.setSchedule(defaultBackupTarget, ''));
|
|
expect(error.reason).to.be(BoxError.BAD_FIELD);
|
|
});
|
|
|
|
it('can set valid schedule', async function () {
|
|
for (const pattern of [ '00 * * * * *', constants.CRON_PATTERN_NEVER ]) {
|
|
await backupTargets.setSchedule(defaultBackupTarget, pattern);
|
|
const backupTarget = await backupTargets.get(defaultBackupTarget.id);
|
|
expect(backupTarget.schedule).to.be(pattern);
|
|
}
|
|
});
|
|
|
|
it('cannot set invalid retention', async function () {
|
|
const [error] = await safe(backupTargets.setRetention(defaultBackupTarget, { keepWhenever: 4 }));
|
|
expect(error.reason).to.be(BoxError.BAD_FIELD);
|
|
});
|
|
|
|
it('can set valid retention', async function () {
|
|
for (const retention of [ { keepWithinSecs: 1 }, { keepYearly: 3 }, { keepMonthly: 14 } ]) {
|
|
await backupTargets.setRetention(defaultBackupTarget, retention);
|
|
const backupTarget = await backupTargets.get(defaultBackupTarget.id);
|
|
expect(backupTarget.retention).to.eql(retention);
|
|
}
|
|
});
|
|
});
|