import test from 'node:test'; import assert from 'node:assert/strict'; import { GET as getMail, POST as postMail, PATCH as patchMail } from '../../src/app/api/agents/mail/route'; import { GET as getReservations } from '../../src/app/api/agents/reservations/route'; async function readJson(response: Response): Promise { const text = await response.text(); return text ? JSON.parse(text) : {}; } test('GET /api/agents/mail returns AGENT_NOT_FOUND for unknown agent', async () => { const response = await getMail(new Request('http://localhost/api/agents/mail?agent=nonexistent')); const data = await readJson(response); assert.equal(response.status, 404); assert.equal(data.ok, false); assert.equal(data.error?.code, 'AGENT_NOT_FOUND'); }); test('POST /api/agents/mail returns structured error on missing sender/recipient', async () => { const response = await postMail( new Request('http://localhost/api/agents/mail', { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ from: 'unknown', to: 'missing', bead: 'bb-123', category: 'INFO', subject: 'hello', body: 'world', }), }), ); const data = await readJson(response); assert.equal(response.status, 404); assert.equal(data.ok, false); assert.equal(typeof data.error?.code, 'string'); assert.equal(typeof data.error?.message, 'string'); }); test('PATCH /api/agents/mail validates action', async () => { const response = await patchMail( new Request('http://localhost/api/agents/mail', { method: 'PATCH', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ action: 'nope', agent: 'x', message: 'y', }), }), ); const data = await readJson(response); assert.equal(response.status, 400); assert.equal(data.ok, false); assert.equal(data.error?.code, 'INVALID_ACTION'); }); test('GET /api/agents/reservations returns AGENT_NOT_FOUND for unknown agent', async () => { const response = await getReservations( new Request('http://localhost/api/agents/reservations?agent=nonexistent'), ); const data = await readJson(response); assert.equal(response.status, 404); assert.equal(data.ok, false); assert.equal(data.error?.code, 'AGENT_NOT_FOUND'); }); test('GET /api/agents/reservations without agent returns success payload', async () => { const response = await getReservations( new Request('http://localhost/api/agents/reservations'), ); const data = await readJson(response); assert.equal(response.status, 200); assert.equal(data.ok, true); assert.equal(data.command, 'agent status'); });