This commit is contained in:
@@ -6,6 +6,17 @@ const espree = require('espree');
|
||||
|
||||
const { normalizeLanguage, translateText } = require('../renderer/i18n');
|
||||
|
||||
test('online backup selection defaults to unlimited in both languages', () => {
|
||||
assert.equal(translateText('Unbegrenzt (Standard)', 'en'), 'Unlimited (default)');
|
||||
assert.equal(translateText('Unlimited (default)', 'de'), 'Unbegrenzt (Standard)');
|
||||
assert.equal(translateText('7 Tage', 'en'), '7 days');
|
||||
const source = fs.readFileSync(path.join(__dirname, '../renderer/app.js'), 'utf8');
|
||||
const select = source.match(/<select id="onlineBackupRetentionSelect">([\s\S]*?)<\/select>/)[1];
|
||||
assert.match(select, /<option value="forever" selected>Unbegrenzt \(Standard\)<\/option>/);
|
||||
assert.equal((select.match(/ selected/g) || []).length, 1);
|
||||
assert.match(source, /const retention = retentionSelect\?\.value \|\| 'forever';/);
|
||||
});
|
||||
|
||||
test('translates permanent source deletion controls to English', () => {
|
||||
assert.equal(translateText('Quelldatei nach vollständigem Upload dauerhaft löschen', 'en'), 'Permanently delete source file after complete upload');
|
||||
assert.equal(translateText('Dauerhaftes Löschen aktivieren', 'en'), 'Enable permanent deletion');
|
||||
|
||||
@@ -182,7 +182,7 @@ describe('transactional online backup manager', () => {
|
||||
const result = await fixture.manager.createManaged();
|
||||
|
||||
assert.deepEqual(fixture.events, ['prepare', 'upload', 'commit']);
|
||||
assert.deepEqual(fixture.createArguments, [settings, '2.1.31', fixture.createdAt, '7d', null]);
|
||||
assert.deepEqual(fixture.createArguments, [settings, '2.1.31', fixture.createdAt, 'forever', null]);
|
||||
assert.match(fixture.createdAt, /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/);
|
||||
assert.deepEqual(result, {
|
||||
ok: true,
|
||||
|
||||
@@ -50,10 +50,10 @@ describe('online backup key', () => {
|
||||
assert.equal(serialized.includes('private-webhook'), false);
|
||||
assert.equal(serialized.includes(parsed.masterKey.toString('base64url')), false);
|
||||
assert.deepEqual(Object.keys(created.record).sort(), ['blob', 'deleteVerifier', 'expiresInSeconds', 'id']);
|
||||
assert.equal(created.record.expiresInSeconds, 604_800);
|
||||
assert.equal(created.record.expiresInSeconds, null);
|
||||
});
|
||||
|
||||
it('supports the allowed validity periods with seven days as the default', () => {
|
||||
it('supports the allowed validity periods with unlimited validity as the default', () => {
|
||||
const { createOnlineBackup, normalizeOnlineBackupRetention } = require('../lib/online-backup');
|
||||
const createdAt = '2026-08-09T00:00:00.000Z';
|
||||
const expected = new Map([
|
||||
@@ -64,7 +64,10 @@ describe('online backup key', () => {
|
||||
['forever', [null, null]]
|
||||
]);
|
||||
|
||||
assert.equal(createOnlineBackup(settings(), '2.1.41', createdAt).record.expiresInSeconds, 604_800);
|
||||
assert.equal(normalizeOnlineBackupRetention(), 'forever');
|
||||
const defaultBackup = createOnlineBackup(settings(), '2.1.41', createdAt);
|
||||
assert.equal(defaultBackup.record.expiresInSeconds, null);
|
||||
assert.equal(defaultBackup.expiresAt, null);
|
||||
for (const [retention, [seconds, expiresAt]] of expected) {
|
||||
const created = createOnlineBackup(settings(), '2.1.41', createdAt, retention);
|
||||
assert.equal(created.record.expiresInSeconds, seconds);
|
||||
|
||||
+1
-1
@@ -1475,7 +1475,7 @@ setTimeout(async () => {
|
||||
check('Online backup controls exist', onlineBackupControls);
|
||||
|
||||
const onlineBackupRetentionState = await wc.executeJavaScript('(() => { const select = document.getElementById("onlineBackupRetentionSelect"); const wrapper = select.closest(".online-backup-retention-select"); return { value: select.value, options: [...select.options].map(option => option.value + ":" + option.textContent), arrowRight: getComputedStyle(wrapper, "::after").right, fontSize: getComputedStyle(select).fontSize }; })()');
|
||||
check('Online backup validity defaults to seven days and offers every requested duration', onlineBackupRetentionState.value === '7d' && onlineBackupRetentionState.options.join('|') === '1d:24 Stunden|3d:3 Tage|7d:7 Tage (Standard)|31d:31 Tage|forever:Unbegrenzt' && onlineBackupRetentionState.arrowRight === '14px' && parseFloat(onlineBackupRetentionState.fontSize) >= 10);
|
||||
check('Online backup validity defaults to unlimited and offers every requested duration', onlineBackupRetentionState.value === 'forever' && onlineBackupRetentionState.options.join('|') === '1d:24 Stunden|3d:3 Tage|7d:7 Tage|31d:31 Tage|forever:Unbegrenzt (Standard)' && onlineBackupRetentionState.arrowRight === '14px' && parseFloat(onlineBackupRetentionState.fontSize) >= 10);
|
||||
|
||||
const onlineBackupKeyContract = await wc.executeJavaScript('document.getElementById("onlineBackupKeyInput")?.maxLength + "|" + document.getElementById("onlineBackupKeyInput")?.getAttribute("pattern")');
|
||||
check('Online backup input enforces the 75-character MHU key format', onlineBackupKeyContract === '75|MHU2-[A-Za-z0-9_-]{70}');
|
||||
|
||||
Reference in New Issue
Block a user