40 lines
1.3 KiB
JavaScript
40 lines
1.3 KiB
JavaScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
validateEnvelope,
|
|
validateOperationPayload,
|
|
validateOperationRequest,
|
|
} from "../../src/adapters/http/schema-registry.js";
|
|
|
|
describe("HTTP platform schema boundary", () => {
|
|
it("rejects an invalid top-level envelope", () => {
|
|
expect(validateEnvelope({ success: true }).success).toBe(false);
|
|
});
|
|
|
|
it("accepts and clones a generic valid response envelope", () => {
|
|
const source = {
|
|
success: true,
|
|
data: [],
|
|
meta: { requestId: "request-1", traceId: "trace-1" },
|
|
};
|
|
const result = validateEnvelope(source);
|
|
expect(result).toMatchObject({ success: true, data: source });
|
|
if (!result.success) throw new Error("expected valid envelope");
|
|
expect(result.data).not.toBe(source);
|
|
});
|
|
|
|
it("fails closed without leaking input when a feature schema is absent", () => {
|
|
const result = validateOperationPayload("UnknownPayload", {
|
|
secret: "not-projected",
|
|
});
|
|
expect(result).toMatchObject({
|
|
success: false,
|
|
issues: [{ path: "", code: "SCHEMA_NOT_REGISTERED" }],
|
|
});
|
|
expect(JSON.stringify(result)).not.toContain("not-projected");
|
|
expect(
|
|
validateOperationRequest("UnknownCommand", { name: "Example" }).success,
|
|
).toBe(false);
|
|
});
|
|
});
|