Files
Dune/tests/admin-verification-diagnostics.test.ts
T
Quintine 0681529e8e
Verify and publish checkpoint container / container (push) Canceled after 0s
Clarify Gitea verification failure diagnostics
2026-10-29 05:48:30 +11:00

35 lines
1.9 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {
describeFailure,
failureLocation,
requestFailure,
requestIdentity,
} from '../tools/admin-verification-diagnostics.mjs';
void test('a request failure remains distinct from an earlier expected denial', () => {
const completed = { ...requestIdentity('POST', '/api/admin/rooms/ABCDEFGH/seat-ai'), status: 403 };
const error = Object.assign(new TypeError('private message'), {
cause: { code: 'ECONNRESET', message: 'private cause' },
});
const failed = requestFailure(requestIdentity('POST', '/api/admin/rooms/ABCDEFGH/seat-ai?secret=private'), error);
assert.equal(describeFailure(completed, undefined), 'POST /api/admin/rooms/ABCDEFGH/seat-ai last completed with HTTP 403');
assert.equal(describeFailure(failed, 'tools/admin-seat-ai-verification.mjs:35:7'),
'POST /api/admin/rooms/ABCDEFGH/seat-ai failed before completing a response (TypeError, ECONNRESET); tools/admin-seat-ai-verification.mjs:35:7');
assert.doesNotMatch(JSON.stringify(failed), /private|secret/);
});
void test('diagnostics allow only known error names, codes and verification locations', () => {
const error = { name: 'credential', code: 'private', stack: [
'Error: private assertion payload',
' at request (file:///workspace/tools/verify-admin.mjs:42:5)',
' at verifyParticipantAi (file:///workspace/tools/admin-seat-ai-verification.mjs:35:7)',
].join('\n') };
assert.deepEqual(requestFailure(requestIdentity('GET', '/api/admin/rooms'), error), {
method: 'GET', path: '/api/admin/rooms', kind: 'request-error', name: 'Error',
});
assert.equal(failureLocation(error), 'tools/admin-seat-ai-verification.mjs:35:7');
assert.equal(failureLocation({ stack: 'Error: private\n at other (file:///elsewhere/private.js:2:3)' }), undefined);
assert.equal(requestIdentity('GET', '/api/admin/rooms/!secret').path, '[invalid path]');
});