Files
cloudron-box/src/test/backuptargets-test.js
T
2025-07-25 08:12:27 +02:00

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);
}
});
});