backups: add backup multiple targets

This commit is contained in:
Girish Ramakrishnan
2025-07-24 19:02:02 +02:00
parent 100bea981d
commit 3aafbd2ccb
25 changed files with 744 additions and 535 deletions
+4 -37
View File
@@ -14,7 +14,7 @@ const backupListing = require('../backuplisting.js'),
safe = require('safetydance');
describe('backups', function () {
const { setup, cleanup, defaultBackupTarget } = common;
const { setup, cleanup } = common;
const boxBackup = {
id: null,
@@ -48,8 +48,11 @@ describe('backups', function () {
targetId: null
};
let defaultBackupTarget;
before(async function () {
await setup();
defaultBackupTarget = await backupTargets._getDefault();
boxBackup.targetId = defaultBackupTarget.id;
appBackup.targetId = defaultBackupTarget.id;
});
@@ -120,40 +123,4 @@ describe('backups', function () {
expect(result).to.be(null);
});
});
describe('config and policy', function () {
it('can get backup config', async function () {
const backupConfig = await backupTargets.getConfig();
expect(backupConfig.provider).to.be('filesystem');
expect(backupConfig.backupFolder).to.be('/var/backups');
});
it('can set backup config', async function () {
let backupConfig = await backupTargets.getConfig();
backupConfig = Object.assign({}, backupConfig, { backupFolder: '/tmp/backups' });
await backupTargets.setConfig(backupConfig);
const newBackupConfig = await backupTargets.getConfig();
expect(newBackupConfig.backupFolder).to.be('/tmp/backups');
});
it('cannot set backup policy with invalid schedule', async function () {
const [error] = await safe(backupTargets.setPolicy({ schedule: '', retention: { keepWithinSecs: 1 }}));
expect(error.reason).to.be(BoxError.BAD_FIELD);
});
it('cannot set backup policy with missing retention', async function () {
const [error] = await safe(backupTargets.setPolicy({ schedule: '00 * * * * *'}));
expect(error.reason).to.be(BoxError.BAD_FIELD);
});
it('cannot set backup policy with invalid retention', async function () {
const [error] = await safe(backupTargets.setPolicy({ schedule: '00 * * * * *', retention: { keepWhenever: 4 }}));
expect(error.reason).to.be(BoxError.BAD_FIELD);
});
it('can set valid backup policy', async function () {
await backupTargets.setPolicy({ schedule: '00 00 2,23 * * 0,1,2', retention: { keepWithinSecs: 1 }});
});
});
});