/** * Reply Format Compatibility Tests * * Verifies that existing handler reply formats are correctly * normalized by the @open-matrix/federation package. */ import { describe, it } from 'node:test'; import { strict as assert } from 'node:assert'; import { normalizeInternalReply } from '@open-matrix/federation'; describe('Reply Format Compatibility', () => { describe('RequestReplyHelper format', () => { it('normalizes { ok: true, correlationId, result }', () => { // This is what our RequestReplyHelper.executeWithReply publishes const reply = JSON.stringify({ ok: true, correlationId: 'abc-123', result: { files: 10, directories: 3 }, }); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.ok, true); assert.strictEqual(normalized.correlationId, 'abc-123'); assert.deepStrictEqual(normalized.body, { files: 10, directories: 3 }); }); it('normalizes { ok: false, correlationId, error }', () => { // This is what our RequestReplyHelper publishes on error const reply = JSON.stringify({ ok: false, correlationId: 'abc-123', error: { message: 'File not found', }, }); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.ok, false); assert.strictEqual(normalized.correlationId, 'abc-123'); }); }); describe('Alternative reply formats', () => { it('normalizes { result: ... } shorthand', () => { const reply = JSON.stringify({ result: { count: 42 } }); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.ok, true); assert.deepStrictEqual(normalized.body, { count: 42 }); }); it('normalizes plain JSON object', () => { const reply = JSON.stringify({ foo: 'bar', count: 123 }); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.ok, true); assert.deepStrictEqual(normalized.body, { foo: 'bar', count: 123 }); }); it('normalizes raw string (non-JSON)', () => { const normalized = normalizeInternalReply('hello world', 'fallback'); assert.strictEqual(normalized.ok, true); assert.strictEqual(normalized.body, 'hello world'); }); it('normalizes JSON array', () => { const reply = JSON.stringify([1, 2, 3]); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.ok, true); assert.deepStrictEqual(normalized.body, [1, 2, 3]); }); }); describe('Correlation ID handling', () => { it('uses correlationId from payload if present', () => { const reply = JSON.stringify({ ok: true, correlationId: 'from-payload', result: {}, }); const normalized = normalizeInternalReply(reply, 'fallback'); assert.strictEqual(normalized.correlationId, 'from-payload'); }); it('uses fallback correlationId if not in payload', () => { const reply = JSON.stringify({ result: {} }); const normalized = normalizeInternalReply(reply, 'fallback-id'); assert.strictEqual(normalized.correlationId, 'fallback-id'); }); }); });