Files
ForgeFlow/tests/configuration-backup.test.mjs
T
NuklearRabbit 4ad698c4eb Release ForgeFlow 0.8.1
Add advanced Git and deployment workflows, secure backups and auditing, live Gitea integration, desktop notifications, connection validation, and the premium responsive UX refresh.
2026-07-26 00:42:17 +02:00

28 lines
1.5 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import backupModule from '../src/main/configuration-backup.cjs';
const { sanitizeConfiguration, createEncryptedBackup, readEncryptedBackup } = backupModule;
test('configuration backups exclude credentials and operation history', () => {
const clean = sanitizeConfiguration({
gitea: { baseUrl: 'https://gitea.test', encryptedToken: 'secret-token' },
servers: [{ id: 'server', host: 'unraid.test', encryptedPassword: 'password', encryptedPassphrase: 'passphrase' }],
operations: [{ id: 'operation', sha: 'a'.repeat(40) }],
preferences: { autoRefresh: true }
});
assert.equal(clean.gitea.encryptedToken, null);
assert.equal('encryptedPassword' in clean.servers[0], false);
assert.equal('encryptedPassphrase' in clean.servers[0], false);
assert.deepEqual(clean.operations, []);
});
test('configuration backups round-trip with authenticated encryption', () => {
const serialized = createEncryptedBackup({ workspaceRoots: ['C:/Projects'], gitea: { encryptedToken: 'secret' } }, 'correct horse battery staple');
assert.doesNotMatch(serialized, /C:\/Projects|secret/);
const restored = readEncryptedBackup(serialized, 'correct horse battery staple');
assert.deepEqual(restored.configuration.workspaceRoots, ['C:/Projects']);
assert.equal(restored.configuration.gitea.encryptedToken, null);
assert.throws(() => readEncryptedBackup(serialized, 'incorrect passphrase'), /could not be decrypted/i);
});