backups: add backup multiple targets
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
/* 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('/var/backups');
|
||||
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);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user