Files
pulse-signage/test/audit-log-settings.test.js
T
lzstealth ea72747822
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile, web, pulse-signage-web) (push) Successful in 1m12s
Publish Docker Image / build-and-push-existing-registry (./build/Dockerfile.player, player, pulse-signage-player) (push) Successful in 34s
Release 2.8.2
2026-08-16 22:41:39 +01:00

62 lines
2.0 KiB
JavaScript

const test = require('node:test');
const assert = require('node:assert/strict');
require('../src/common');
const { buildAuditChanges, recordRequestAuditEvent } = require('../src/data/audit-log');
function createPool(settings) {
const inserts = [];
return {
inserts,
async query(sql, params) {
if (String(sql).includes('SELECT id, setting_key, setting_value FROM o_app_settings')) {
return [[
{ setting_key: 'audit.enabled', setting_value: JSON.stringify(settings.enabled) },
{ setting_key: 'audit.categories', setting_value: JSON.stringify(settings.categories) },
{ setting_key: 'audit.include_request_metadata', setting_value: JSON.stringify(settings.includeMetadata) }
]];
}
if (String(sql).includes('INSERT INTO o_audit_events')) {
inserts.push(params);
}
return [[]];
}
};
}
const request = {
ip: '192.0.2.10',
headers: {
'user-agent': 'audit-test'
}
};
test('audit writer skips disabled categories', async () => {
const pool = createPool({ enabled: true, categories: ['security'], includeMetadata: true });
await recordRequestAuditEvent(pool, request, { category: 'authentication', eventType: 'login.success' });
assert.equal(pool.inserts.length, 0);
});
test('audit writer omits request metadata when disabled', async () => {
const pool = createPool({ enabled: true, categories: ['authentication'], includeMetadata: false });
await recordRequestAuditEvent(pool, request, { category: 'authentication', eventType: 'login.success' });
assert.equal(pool.inserts.length, 1);
assert.equal(pool.inserts[0][6], null);
assert.equal(pool.inserts[0][7], null);
});
test('audit changes include only fields with different from and to values', () => {
assert.deepEqual(buildAuditChanges({
name: 'Old name',
playlistId: 4,
roleIds: [1, 2]
}, {
name: 'New name',
playlistId: 4,
roleIds: [2, 3]
}), {
name: { from: 'Old name', to: 'New name' },
roleIds: { from: [1, 2], to: [2, 3] }
});
});