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