import test from 'node:test'; import assert from 'node:assert/strict'; import { startServer } from '../src/serve.mjs'; import { close } from './fixture.mjs'; const count = { input: 2, output: 3, cacheWrite: 4, cacheRead: 5, unknownTurns: 1 }; export const usage = { total: count, byRun: [{ run: 'run1', ...count }], byInstance: [{ instance: 'coder', ...count }], byModel: [{ provider: 'provider', model: 'model', ...count }], byProvider: [{ provider: 'provider', ...count }], byAccount: [{ account: null, ...count }] }; test('REQ-WEB-1 usage read keeps unknown counts and each token kind; no query or write is accepted', async t => { let calls = 0; const server = await startServer({ port: 0, bus: { usage: async () => { calls++; return usage; } } }); t.after(() => close(server)); const url = `http://127.0.0.1:${server.address().port}/api/bus/usage`; const response = await fetch(url), body = await response.json(); assert.equal(response.status, 200); assert.deepEqual(body.rows, [usage]); assert.equal((await fetch(url + '?business=other')).status, 400); assert.equal((await fetch(url, { method: 'POST' })).status, 405); assert.equal(calls, 1); }); test('REQ-WEB-1 malformed usage is refused instead of shown as zero', async t => { const server = await startServer({ port: 0, bus: { usage: async () => ({}) } }); t.after(() => close(server)); const response = await fetch(`http://127.0.0.1:${server.address().port}/api/bus/usage`); assert.equal(response.status, 502); });