Versie 0.2.0
This commit is contained in:
commit
e77d8fd373
495 files changed
+81026
No files matched your search
@@ -0,0 +1,173 @@
|
||||
// Generated, do not edit. sha256:ea3063d2dd3cc633da7f13f8cbd1705cc2b0b7e8797aeceebc91b788a0760522
|
||||
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 { credentialsStatus, setCredentials, clearCredentials, loadCredentials } from '../../server/auth.mjs';
|
||||
import { writeActiveName } from '../../server/portfolios.mjs';
|
||||
import { secretsFile, writeSecretsStore } from '../../server/keys.mjs';
|
||||
|
||||
let DIR;
|
||||
let vorige;
|
||||
let vorigeUser;
|
||||
let vorigWachtwoord;
|
||||
|
||||
beforeEach(async () => {
|
||||
vorige = process.env.ASSETAPP_DATA_DIR;
|
||||
vorigeUser = process.env.ASSETAPP_USER;
|
||||
vorigWachtwoord = process.env.ASSETAPP_PASSWORD;
|
||||
delete process.env.ASSETAPP_USER;
|
||||
delete process.env.ASSETAPP_PASSWORD;
|
||||
DIR = await mkdtemp(join(tmpdir(), 'assetapp-auth-'));
|
||||
process.env.ASSETAPP_DATA_DIR = DIR;
|
||||
writeActiveName('Echt');
|
||||
});
|
||||
|
||||
afterEach(async () => {
|
||||
if (vorige === undefined) delete process.env.ASSETAPP_DATA_DIR; else process.env.ASSETAPP_DATA_DIR = vorige;
|
||||
if (vorigeUser === undefined) delete process.env.ASSETAPP_USER; else process.env.ASSETAPP_USER = vorigeUser;
|
||||
if (vorigWachtwoord === undefined) delete process.env.ASSETAPP_PASSWORD;
|
||||
else process.env.ASSETAPP_PASSWORD = vorigWachtwoord;
|
||||
await rm(DIR, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
const store = async () => JSON.parse(await readFile(secretsFile(), 'utf-8'));
|
||||
|
||||
describe('credentialsStatus', () => {
|
||||
it('meldt "geen" als er niets staat', async () => {
|
||||
assert.deepEqual(await credentialsStatus(), { ingesteld: false, bron: 'geen', wijzigbaar: true });
|
||||
});
|
||||
|
||||
it('geeft het wachtwoord NOOIT terug', async () => {
|
||||
await setCredentials('geheim');
|
||||
const status = await credentialsStatus();
|
||||
|
||||
assert.equal(status.ingesteld, true);
|
||||
assert.equal(JSON.stringify(status).includes('geheim'), false, 'het wachtwoord staat in de status');
|
||||
});
|
||||
|
||||
it('meldt de omgeving als bron, en dat het dan niet te wijzigen is', async () => {
|
||||
process.env.ASSETAPP_PASSWORD = 'ook';
|
||||
|
||||
const status = await credentialsStatus();
|
||||
assert.equal(status.bron, 'omgeving');
|
||||
assert.equal(status.wijzigbaar, false);
|
||||
});
|
||||
|
||||
it('ZET DE TOEGANGSCONTROLE AAN met alleen ASSETAPP_PASSWORD', async () => {
|
||||
process.env.ASSETAPP_PASSWORD = 'uit-de-omgeving';
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, true);
|
||||
assert.deepEqual(await loadCredentials(), { password: 'uit-de-omgeving' });
|
||||
});
|
||||
|
||||
it('negeert ASSETAPP_USER volledig', async () => {
|
||||
process.env.ASSETAPP_USER = 'harmen';
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, false);
|
||||
assert.equal(await loadCredentials(), null);
|
||||
});
|
||||
|
||||
it('telt een leeg wachtwoord in het bestand niet als slot', async () => {
|
||||
await writeSecretsStore({ assetapp_auth: { password: '' } });
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, false);
|
||||
assert.equal(await loadCredentials(), null);
|
||||
});
|
||||
|
||||
it('laat een BESTAANDE rij met een gebruikersnaam gewoon werken', async () => {
|
||||
await writeSecretsStore({ assetapp_auth: { user: 'harmen', password: 'van-vroeger' } });
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, true);
|
||||
assert.deepEqual(await loadCredentials(), { password: 'van-vroeger' });
|
||||
});
|
||||
});
|
||||
|
||||
describe('setCredentials', () => {
|
||||
it('zet het, en loadCredentials vindt het terug', async () => {
|
||||
const uit = await setCredentials('geheim');
|
||||
|
||||
assert.equal(uit.ingesteld, true);
|
||||
assert.equal(uit.naHerstart, true, 'de UI hoort te melden dat het pas na een herstart geldt');
|
||||
assert.deepEqual(await loadCredentials(), { password: 'geheim' });
|
||||
});
|
||||
|
||||
it('wijzigen is dezelfde handeling als aanmaken', async () => {
|
||||
await setCredentials('eerste');
|
||||
await setCredentials('tweede');
|
||||
|
||||
assert.deepEqual(await loadCredentials(), { password: 'tweede' });
|
||||
});
|
||||
|
||||
it('weigert een leeg wachtwoord in plaats van het te bewaren', async () => {
|
||||
await assert.rejects(() => setCredentials(''), (e) => e.key === 'portfolios.passwordRequired');
|
||||
await assert.rejects(() => setCredentials(null), (e) => e.key === 'portfolios.passwordRequired');
|
||||
await assert.rejects(() => setCredentials(undefined), (e) => e.key === 'portfolios.passwordRequired');
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, false, 'en er is niets bewaard');
|
||||
});
|
||||
|
||||
it('stelt GEEN eisen aan wat er wel in staat', async () => {
|
||||
for (const w of ['a', ' ', '1234', 'áé€', 'x'.repeat(500)]) {
|
||||
await setCredentials(w);
|
||||
assert.deepEqual(await loadCredentials(), { password: w });
|
||||
}
|
||||
});
|
||||
|
||||
it('schrijft de rij ZONDER gebruikersnaam weg, ook als er een in stond', async () => {
|
||||
await writeSecretsStore({ assetapp_auth: { user: 'harmen', password: 'van-vroeger' } });
|
||||
|
||||
await setCredentials('nieuw');
|
||||
|
||||
assert.deepEqual((await store()).assetapp_auth, { password: 'nieuw' });
|
||||
});
|
||||
|
||||
it('laat de andere sleutels in het geheimenbestand ongemoeid', async () => {
|
||||
await writeSecretsStore({ nwc_3: { uri: 'geheim' }, ai_handle_secret: 'a'.repeat(64) });
|
||||
|
||||
await setCredentials('geheim');
|
||||
|
||||
const s = await store();
|
||||
assert.equal(s.nwc_3.uri, 'geheim');
|
||||
assert.equal(s.ai_handle_secret, 'a'.repeat(64));
|
||||
});
|
||||
|
||||
it('schrijft in het bestand van de ACTIEVE portefeuille', async () => {
|
||||
await setCredentials('geheim');
|
||||
writeActiveName('Demo');
|
||||
|
||||
assert.equal((await credentialsStatus()).ingesteld, false, 'Demo heeft zijn eigen toegangscontrole');
|
||||
writeActiveName('Echt');
|
||||
assert.equal((await credentialsStatus()).ingesteld, true);
|
||||
});
|
||||
});
|
||||
|
||||
describe('clearCredentials: de weg terug naar "alleen deze machine"', () => {
|
||||
it('haalt het weg', async () => {
|
||||
await setCredentials('geheim');
|
||||
|
||||
const uit = await clearCredentials();
|
||||
|
||||
assert.equal(uit.ingesteld, false);
|
||||
assert.equal(uit.naHerstart, true);
|
||||
assert.equal(await loadCredentials(), null);
|
||||
});
|
||||
|
||||
it('doet niets als er niets stond, en meldt dat ook zo', async () => {
|
||||
const uit = await clearCredentials();
|
||||
|
||||
assert.equal(uit.ingesteld, false);
|
||||
assert.equal(uit.naHerstart, false, 'er valt niets te herstarten voor een wijziging die er niet was');
|
||||
});
|
||||
|
||||
it('laat de andere sleutels staan', async () => {
|
||||
await writeSecretsStore({ nwc_3: { uri: 'geheim' }, assetapp_auth: { password: 'w' } });
|
||||
|
||||
await clearCredentials();
|
||||
|
||||
const s = await store();
|
||||
assert.deepEqual(Object.keys(s), ['nwc_3']);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user