26 lines
1.1 KiB
JavaScript
26 lines
1.1 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import os from 'node:os';
|
|
import path from 'node:path';
|
|
import fs from 'node:fs/promises';
|
|
import auditModule from '../src/main/audit-service.cjs';
|
|
|
|
const { AuditService } = auditModule;
|
|
|
|
test('audit service appends ordered records and exports CSV', async (t) => {
|
|
const root = await fs.mkdtemp(path.join(os.tmpdir(), 'forgeflow-audit-'));
|
|
t.after(() => fs.rm(root, { recursive: true, force: true }));
|
|
const audit = new AuditService({ userDataPath: root, appInfo: { version: 'test' } });
|
|
await Promise.all([
|
|
audit.append('deployment.requested', { repository: 'owner/app', sha: 'a'.repeat(40), note: 'Release, wave 1' }),
|
|
audit.append('deployment.completed', { repository: 'owner/app', result: 'success' })
|
|
]);
|
|
const entries = await audit.list();
|
|
assert.equal(entries.length, 2);
|
|
assert.equal(entries[0].event, 'deployment.completed');
|
|
const destination = path.join(root, 'audit.csv');
|
|
const result = await audit.exportTo(destination, 'csv');
|
|
assert.equal(result.count, 2);
|
|
assert.match(await fs.readFile(destination, 'utf8'), /"Release, wave 1"/);
|
|
});
|