Spaces:
Running
Running
File size: 2,073 Bytes
e8c33fa | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | const test = require('node:test');
const assert = require('node:assert/strict');
// Clear cached module to get a fresh in-memory log each run
delete require.cache[require.resolve('../utils/errorLogger')];
const { logError, getMemoryLog, clearMemoryLog } = require('../utils/errorLogger');
test('logError stores entry in memory log', () => {
const before = getMemoryLog().length;
const err = new Error('Test database error');
logError(err, { code: 'TEST_ERROR', statusCode: 500 });
const log = getMemoryLog();
assert.equal(log.length, before + 1, 'should append one entry');
const entry = log[0];
assert.equal(entry.message, 'Test database error');
assert.equal(entry.code, 'TEST_ERROR');
assert.equal(entry.statusCode, 500);
assert.ok(entry.timestamp, 'should have timestamp');
assert.ok(entry.type, 'should have error type');
});
test('logError does not throw with null error', () => {
assert.doesNotThrow(() => logError(null));
});
test('logError does not throw with undefined context', () => {
assert.doesNotThrow(() => logError(new Error('bare call')));
});
test('logError extracts request context', () => {
const err = new Error('Route error');
const req = {
originalUrl: '/api/test',
method: 'POST',
ip: '127.0.0.1',
headers: { 'user-agent': 'test-agent' },
user: { id: 'user-123' },
body: { title: 'x' },
};
logError(err, { req, code: 'REQUEST_FAILED', statusCode: 500 });
const entry = getMemoryLog()[0];
assert.equal(entry.request.url, '/api/test');
assert.equal(entry.request.method, 'POST');
assert.equal(entry.userId, 'user-123');
});
test('clearMemoryLog empties the buffer', () => {
logError(new Error('to clear'));
clearMemoryLog();
assert.equal(getMemoryLog().length, 0, 'buffer should be empty after clearMemoryLog');
});
test('ring buffer is capped at 500 entries', () => {
clearMemoryLog();
for (let i = 0; i < 510; i++) {
logError(new Error(`error ${i}`));
}
assert.ok(getMemoryLog().length <= 500, 'buffer must not exceed 500 entries');
clearMemoryLog();
});
|