50 lines
1.7 KiB
JavaScript
50 lines
1.7 KiB
JavaScript
import { describe, it } from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import fs from 'fs';
|
|
import os from 'os';
|
|
import path from 'path';
|
|
import { handleCriticalFindings, validateAndRepairJsonFile } from './main.js';
|
|
|
|
describe('main helpers', () => {
|
|
it('validateAndRepairJsonFile accepts valid JSON', () => {
|
|
const ws = fs.mkdtempSync(path.join(os.tmpdir(), 'main-valid-'));
|
|
const file = path.join(ws, 'data.json');
|
|
fs.writeFileSync(file, '[{}]\n');
|
|
|
|
assert.equal(validateAndRepairJsonFile(file, 'data.json'), true);
|
|
assert.equal(fs.readFileSync(file, 'utf8'), '[{}]\n');
|
|
fs.rmSync(ws, { recursive: true, force: true });
|
|
});
|
|
|
|
it('validateAndRepairJsonFile repairs invalid JSON to empty array', () => {
|
|
const ws = fs.mkdtempSync(path.join(os.tmpdir(), 'main-repair-'));
|
|
const file = path.join(ws, 'data.json');
|
|
fs.writeFileSync(file, '{invalid json');
|
|
|
|
assert.equal(validateAndRepairJsonFile(file, 'data.json'), true);
|
|
assert.equal(fs.readFileSync(file, 'utf8'), '[]\n');
|
|
assert.equal(fs.existsSync(`${file}.bak`), true);
|
|
fs.rmSync(ws, { recursive: true, force: true });
|
|
});
|
|
|
|
it('handleCriticalFindings exits when critical findings exist', () => {
|
|
let exitCode = null;
|
|
const findings = [
|
|
{ level: 'critical' },
|
|
{ level: 'warning' },
|
|
];
|
|
|
|
const result = handleCriticalFindings(findings, code => { exitCode = code; });
|
|
|
|
assert.equal(result, true);
|
|
assert.equal(exitCode, 1);
|
|
});
|
|
|
|
it('handleCriticalFindings passes when no critical findings exist', () => {
|
|
let exitCode = null;
|
|
const result = handleCriticalFindings([{ level: 'info' }], code => { exitCode = code; });
|
|
assert.equal(result, false);
|
|
assert.equal(exitCode, null);
|
|
});
|
|
});
|