import { describe, expect, test } from "bun:test"; import { coreCommandEnvelopeSchema } from "../core-command-envelope.js"; import { commandEnvelopeSchema } from "./command-envelope-schema.js"; describe("command envelope schema", () => { test("accepts public envelope with idempotencyKey", () => { const result = commandEnvelopeSchema.safeParse({ version: "1", instanceId: "instance_1", requestId: "req_1", idempotencyKey: "idem_1", command: { kind: "close", }, }); expect(result.success).toBe(true); if (!result.success) { throw new Error("Expected public envelope to parse"); } expect(result.data.idempotencyKey).toBe("idem_1"); }); test("accepts core envelope with idempotencyKey", () => { const result = coreCommandEnvelopeSchema.safeParse({ version: "1", instanceId: "instance_1", requestId: "req_1", idempotencyKey: "idem_1", command: { kind: "close", }, }); expect(result.success).toBe(true); if (!result.success) { throw new Error("Expected core envelope to parse"); } expect(result.data.idempotencyKey).toBe("idem_1"); }); test("rejects empty idempotencyKey", () => { const result = commandEnvelopeSchema.safeParse({ version: "1", requestId: "req_1", idempotencyKey: " ", command: { kind: "close", }, }); expect(result.success).toBe(false); }); test("rejects missing idempotencyKey", () => { const result = commandEnvelopeSchema.safeParse({ version: "1", requestId: "req_1", command: { kind: "close", }, }); expect(result.success).toBe(false); }); });