75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
// 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);
|
|
});
|
|
});
|