Files
AtreidesAssetsFree/tests/server/handle-secret.test.mjs
T

74 lines
2.5 KiB
JavaScript
Raw Permalink Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:d1b5492d54f83698bbcb8bdc3d04e455dbca8d3823702e08f9379c11b89bc2c0
import { describe, it, beforeEach, afterEach } from 'node:test';
import assert from 'node:assert/strict';
import { mkdtemp, rm, readFile } from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { writeActiveName } from '../../server/portfolios.mjs';
import { secretsFile } from '../../server/keys.mjs';
import { handleSecret, _resetHandleSecret } from '../../server/ai/handle-secret.mjs';
let DIR;
let vorige;
beforeEach(async () => {
vorige = process.env.ASSETAPP_DATA_DIR;
DIR = await mkdtemp(join(tmpdir(), 'assetapp-handle-'));
process.env.ASSETAPP_DATA_DIR = DIR;
_resetHandleSecret();
});
afterEach(async () => {
_resetHandleSecret();
if (vorige === undefined) delete process.env.ASSETAPP_DATA_DIR;
else process.env.ASSETAPP_DATA_DIR = vorige;
await rm(DIR, { recursive: true, force: true });
});
describe('handleSecret: één geheim per portefeuille', () => {
it('geeft twee portefeuilles een VERSCHILLEND geheim, ook binnen hetzelfde proces', async () => {
writeActiveName('Echt');
const echt = await handleSecret();
writeActiveName('Demo');
const demo = await handleSecret();
assert.notEqual(demo, echt, 'anders krijgt dezelfde rij-id in beide portefeuilles dezelfde handle');
assert.match(echt, /^[0-9a-f]{64}$/);
assert.match(demo, /^[0-9a-f]{64}$/);
});
it('geeft binnen één portefeuille elke keer hetzelfde geheim terug', async () => {
writeActiveName('Echt');
const eerste = await handleSecret();
assert.equal(await handleSecret(), eerste);
_resetHandleSecret();
assert.equal(await handleSecret(), eerste);
});
it('komt na heen-en-weer wisselen weer bij het eigen geheim uit', async () => {
writeActiveName('Echt');
const echt = await handleSecret();
writeActiveName('Demo');
await handleSecret();
writeActiveName('Echt');
assert.equal(await handleSecret(), echt);
});
it('schrijft het geheim in het geheimenbestand van díe portefeuille en nergens anders', async () => {
writeActiveName('Echt');
const echt = await handleSecret();
const echtPad = secretsFile();
writeActiveName('Demo');
await handleSecret();
const inEcht = JSON.parse(await readFile(echtPad, 'utf-8'));
const inDemo = JSON.parse(await readFile(secretsFile(), 'utf-8'));
assert.equal(inEcht.ai_handle_secret, echt);
assert.notEqual(inDemo.ai_handle_secret, echt);
});
});