81 lines
3.1 KiB
JavaScript
81 lines
3.1 KiB
JavaScript
// Generated, do not edit. sha256:2e6bfe033c662af65c973904363a2a3b198b4658a4ee3fa7b11729b6619711bf
|
|
import { describe, it, beforeEach, afterEach, mock } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { mkdtempSync, rmSync, readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
import { tmpdir } from 'node:os';
|
|
import { join } from 'node:path';
|
|
import { CONFIG } from '../../shared/config.js';
|
|
|
|
let geldig = true;
|
|
const echt = await import('../../server/license.mjs');
|
|
mock.module('../../server/license.mjs', {
|
|
namedExports: { ...echt, verifySignature: () => geldig },
|
|
});
|
|
|
|
const { installLicense } = await import('../../server/data/license-install.js');
|
|
|
|
const BODY = { buyer: 'a'.repeat(64), level: 'full', issued: '2026-09-19', majorFrom: 1, majorTo: 'unlimited' };
|
|
const BESTAND = JSON.stringify({ format: CONFIG.LICENSE.FORMAT, license: BODY, signature: 'b'.repeat(128) });
|
|
|
|
let DIR;
|
|
let vorige;
|
|
const pad = () => join(DIR, CONFIG.LICENSE.FILE_NAME);
|
|
|
|
beforeEach(() => {
|
|
vorige = process.env.ASSETAPP_DATA_DIR;
|
|
DIR = mkdtempSync(join(tmpdir(), 'lic-inst-'));
|
|
process.env.ASSETAPP_DATA_DIR = DIR;
|
|
geldig = true;
|
|
});
|
|
|
|
afterEach(() => {
|
|
if (vorige === undefined) delete process.env.ASSETAPP_DATA_DIR;
|
|
else process.env.ASSETAPP_DATA_DIR = vorige;
|
|
rmSync(DIR, { recursive: true, force: true });
|
|
});
|
|
|
|
describe('een licentie installeren', () => {
|
|
it('schrijft hem weg en meldt of hij deze versie dekt', async () => {
|
|
const uit = await installLicense(BESTAND);
|
|
assert.deepEqual(uit.license, BODY);
|
|
assert.equal(typeof uit.covers, 'boolean');
|
|
assert.ok(existsSync(pad()));
|
|
const opSchijf = JSON.parse(readFileSync(pad(), 'utf8'));
|
|
assert.deepEqual(Object.keys(opSchijf), ['format', 'license', 'signature']);
|
|
});
|
|
|
|
it('weigert onleesbare invoer met de reden erbij, en schrijft NIETS', async () => {
|
|
await assert.rejects(() => installLicense('geen json'), (fout) => {
|
|
assert.equal(fout.key, 'license.installUnreadable');
|
|
assert.match(fout.params.reason, /JSON/);
|
|
return true;
|
|
});
|
|
assert.equal(existsSync(pad()), false);
|
|
});
|
|
|
|
it('weigert een verkeerde handtekening, en schrijft NIETS', async () => {
|
|
geldig = false;
|
|
await assert.rejects(() => installLicense(BESTAND), (fout) => {
|
|
assert.equal(fout.key, 'license.installBadSignature');
|
|
return true;
|
|
});
|
|
assert.equal(existsSync(pad()), false);
|
|
});
|
|
|
|
it('LAAT EEN WERKENDE LICENTIE STAAN als de nieuwe niet deugt', async () => {
|
|
await installLicense(BESTAND);
|
|
const voor = readFileSync(pad(), 'utf8');
|
|
|
|
geldig = false;
|
|
await assert.rejects(() => installLicense(JSON.stringify({ format: 1, license: { ...BODY, majorFrom: 9 }, signature: 'c'.repeat(128) })));
|
|
await assert.rejects(() => installLicense('{ kapot'));
|
|
assert.equal(readFileSync(pad(), 'utf8'), voor, 'de bestaande licentie is aangeraakt');
|
|
});
|
|
|
|
it('overschrijft een BESTAAND bestand wel als de nieuwe deugt', async () => {
|
|
writeFileSync(pad(), 'oude rommel');
|
|
await installLicense(BESTAND);
|
|
assert.deepEqual(JSON.parse(readFileSync(pad(), 'utf8')).license, BODY);
|
|
});
|
|
});
|