Files
AtreidesAssetsFree/tests/server/license-install.test.mjs
T
2026-10-29 11:57:29 +01:00

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);
});
});