import assert from 'node:assert/strict'; import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import test from 'node:test'; import { checkSessionBrokerCoverage, SESSION_BROKER_PATCH2_FILES, } from './session-broker-coverage.mjs'; test('checkSessionBrokerCoverage passes on repository root', () => { const rootDir = path.resolve(import.meta.dirname); const violations = checkSessionBrokerCoverage(rootDir); assert.equal( violations.length, 0, violations.map((item) => `${item.file}:${item.line} ${item.rule}`).join('\n'), ); }); test('checkSessionBrokerCoverage flags direct userAuth.registerAgentSession', () => { const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'broker-coverage-')); try { fs.writeFileSync( path.join(tmpDir, 'bad-module.mjs'), 'export async function run(userAuth) { await userAuth.registerAgentSession("u", "s", 0); }\n', ); const violations = checkSessionBrokerCoverage(tmpDir, { scanRepo: true }); assert.ok(violations.some((item) => item.rule === 'register-agent-session')); } finally { fs.rmSync(tmpDir, { recursive: true, force: true }); } }); test('SESSION_BROKER_PATCH2_FILES includes gateway and proxy', () => { assert.ok(SESSION_BROKER_PATCH2_FILES.includes('tkmind-proxy.mjs')); assert.ok(SESSION_BROKER_PATCH2_FILES.includes('agent-run-gateway.mjs')); assert.ok(SESSION_BROKER_PATCH2_FILES.includes('server.mjs')); });