AkurAI Build
Menu

Public repository / 79c83b9e6f52efc8c6c28131ed95ea11812919c8

akurai-log / scripts/check-contract-fixtures.mjs

Latest change 2577f04e8d3b30f5b729c10273a73b0d54351113 - feat: enforce tenant-safe log contract by Ólafur Búi Ólafsson

import assert from 'node:assert/strict';
import { readFile } from 'node:fs/promises';
import {
  CONTRACT_VERSION,
  CORRELATION_FIELDS,
  MAX_FIELDS,
  classifyField,
  mergeCorrelation,
  normalizeFieldName,
  normalizeCorrelation,
  redactText,
  sanitizeFields,
  sanitizeLog,
} from '../js/monitor-contract.js';
import { clientProxy, createLogger } from '../js/monitor-server.js';
import { initClientLogging } from '../js/monitor-client.js';

const fixture = JSON.parse(await readFile(new URL('../fixtures/monitor-contract.json', import.meta.url)));
for (const testCase of fixture.classification_cases) {
  assert.equal(classifyField(testCase.name), testCase.class, `classification mismatch for ${testCase.name}`);
}
for (const testCase of fixture.normalization_cases) {
  assert.equal(normalizeFieldName(testCase.input), testCase.output, `normalization mismatch for ${testCase.input}`);
}
assert.equal(CONTRACT_VERSION, fixture.version);
assert.deepEqual(CORRELATION_FIELDS, fixture.correlation_fields);

const correlation = normalizeCorrelation(fixture.safe_correlation);
assert.deepEqual(correlation, fixture.safe_correlation);
for (const invalid of fixture.invalid_correlation) {
  assert.deepEqual(normalizeCorrelation({ workspace_id: invalid }), {});
}

assert.deepEqual(sanitizeFields(fixture.unsafe_fields), null);
assert.deepEqual(sanitizeFields(fixture.safe_fields), fixture.safe_fields);
assert.equal(fixture.max_fields, MAX_FIELDS);
assert.equal(sanitizeFields(Object.fromEntries(
  Array.from({ length: MAX_FIELDS + 10 }, (_, index) => [`field_${index}`, index]),
)).field_63, 63);
const boundedFields = sanitizeFields(Object.fromEntries(
  Array.from({ length: MAX_FIELDS + 10 }, (_, index) => [`field_${index}`, index]),
));
assert.equal(Object.keys(boundedFields).length, MAX_FIELDS);
const orderingFields = sanitizeFields(Object.fromEntries(
  fixture.ordering_keys.map((key) => [key, true]),
));
assert.deepEqual(Object.keys(orderingFields), fixture.ordering_survives);
for (const example of fixture.redaction_cases) {
  assert.equal(redactText(example.input), example.output);
}

const safeLog = sanitizeLog({
  source: 'api',
  line: 'request failed',
  level: 'error',
  target: 'http',
  origin: 'server',
  fields: { ...fixture.safe_fields, ...fixture.safe_correlation, note: 'drop me' },
  ...fixture.safe_correlation,
  ts: 1,
});
assert.equal(sanitizeLog({ source: 'api', line: 'ok', origin: 'server' }).target, '');
const camelLog = sanitizeLog({ source: 'api', line: 'ok', origin: 'server', organizationId: 'org_acme-01' });
assert.equal(camelLog.organization_id, 'org_acme-01');
assert.deepEqual(
  Object.fromEntries(CORRELATION_FIELDS.map((field) => [field, safeLog[field]])),
  fixture.safe_correlation,
);
assert.equal(safeLog.fields.note, undefined);
assert.equal(mergeCorrelation({ organization_id: 'org-a' }, { organization_id: 'org-b' }), null);
assert.equal(sanitizeLog({ source: 'api', line: 'ok', origin: 'server' }, { organization_id: 'org-a' }).organization_id, 'org-a');
const requests = [];
globalThis.fetch = async (_url, init) => {
  requests.push(JSON.parse(init.body));
  return { ok: true, status: 202 };
};
const logger = createLogger('api', {
  url: 'https://monitor.invalid',
  token: 'test-token',
  correlation: { organizationId: 'org_acme-01' },
});
logger.info('request failed', { requestId: 'req-9f8e', note: 'private' });
logger.flush();
await new Promise((resolve) => setTimeout(resolve, 0));
assert.equal(requests[0].logs[0].organization_id, 'org_acme-01');
assert.equal(requests[0].logs[0].request_id, 'req-9f8e');
assert.equal(requests[0].logs[0].fields, null);

globalThis.window = { addEventListener() {} };
globalThis.document = { visibilityState: 'visible' };
globalThis.location = { pathname: '/app' };
const browserLogger = initClientLogging({
  app: 'web',
  capture: [],
  endpoint: '/api/client-logs',
  correlation: { workspaceId: 'ws_acme-01' },
});
browserLogger.log('info', 'request failed', { requestId: 'req-9f8e', note: 'private' });
browserLogger.flush();
await new Promise((resolve) => setTimeout(resolve, 0));
assert.equal(requests[1].logs[0].workspace_id, 'ws_acme-01');
assert.equal(requests[1].logs[0].request_id, 'req-9f8e');
assert.equal(requests[1].logs[0].fields, null);
const proxy = clientProxy('api', {
  url: 'https://monitor.invalid',
  token: 'test-token',
  correlation: { organization_id: 'org_acme-01' },
});
const result = await proxy({
  logs: [{
    line: 'Authorization: Bearer private',
    organization_id: 'org_acme-01',
    fields: fixture.unsafe_fields,
  }],
});
assert.equal(result.inserted, 1);
console.log('monitor contract fixtures: ok');