test: tighten channel message contract assertions

This commit is contained in:
Peter Steinberger
2026-05-09 22:36:42 +01:00
parent 2575c6aea6
commit 666ed4d889

View File

@@ -14,6 +14,16 @@ import {
verifyLivePreviewFinalizerCapabilityProofs,
} from "./contracts.js";
function verifiedEntries<T extends { status: string }>(results: readonly T[]): T[] {
return results.filter((result) => result.status === "verified");
}
function expectOnlyVerifiedOrNotDeclared(results: readonly { status: string }[]): void {
expect(
results.every((result) => result.status === "verified" || result.status === "not_declared"),
).toBe(true);
}
describe("durable final capability contracts", () => {
it("lists declared durable-final capabilities in stable order", () => {
expect(
@@ -32,24 +42,23 @@ describe("durable final capability contracts", () => {
const text = vi.fn();
const silent = vi.fn(async () => {});
await expect(
verifyDurableFinalCapabilityProofs({
adapterName: "demo",
capabilities: {
text: true,
silent: true,
},
proofs: {
text,
silent,
},
}),
).resolves.toEqual(
expect.arrayContaining([
{ capability: "text", status: "verified" },
{ capability: "silent", status: "verified" },
]),
);
const results = await verifyDurableFinalCapabilityProofs({
adapterName: "demo",
capabilities: {
text: true,
silent: true,
},
proofs: {
text,
silent,
},
});
expect(verifiedEntries(results)).toEqual([
{ capability: "text", status: "verified" },
{ capability: "silent", status: "verified" },
]);
expect(results).toHaveLength(12);
expectOnlyVerifiedOrNotDeclared(results);
expect(text).toHaveBeenCalledTimes(1);
expect(silent).toHaveBeenCalledTimes(1);
});
@@ -75,28 +84,27 @@ describe("durable final capability contracts", () => {
const text = vi.fn();
const media = vi.fn();
await expect(
verifyChannelMessageAdapterCapabilityProofs({
adapterName: "demo",
adapter: {
durableFinal: {
capabilities: {
text: true,
media: true,
},
const results = await verifyChannelMessageAdapterCapabilityProofs({
adapterName: "demo",
adapter: {
durableFinal: {
capabilities: {
text: true,
media: true,
},
},
proofs: {
text,
media,
},
}),
).resolves.toEqual(
expect.arrayContaining([
{ capability: "text", status: "verified" },
{ capability: "media", status: "verified" },
]),
);
},
proofs: {
text,
media,
},
});
expect(verifiedEntries(results)).toEqual([
{ capability: "text", status: "verified" },
{ capability: "media", status: "verified" },
]);
expect(results).toHaveLength(12);
expectOnlyVerifiedOrNotDeclared(results);
expect(text).toHaveBeenCalledTimes(1);
expect(media).toHaveBeenCalledTimes(1);
});
@@ -113,30 +121,29 @@ describe("durable final capability contracts", () => {
}),
).toEqual(["finalEdit", "normalFallback"]);
await expect(
verifyChannelMessageLiveFinalizerProofs({
adapterName: "demo",
adapter: {
live: {
finalizer: {
capabilities: {
finalEdit: true,
normalFallback: true,
},
const results = await verifyChannelMessageLiveFinalizerProofs({
adapterName: "demo",
adapter: {
live: {
finalizer: {
capabilities: {
finalEdit: true,
normalFallback: true,
},
},
},
proofs: {
finalEdit,
normalFallback,
},
}),
).resolves.toEqual(
expect.arrayContaining([
{ capability: "finalEdit", status: "verified" },
{ capability: "normalFallback", status: "verified" },
]),
);
},
proofs: {
finalEdit,
normalFallback,
},
});
expect(verifiedEntries(results)).toEqual([
{ capability: "finalEdit", status: "verified" },
{ capability: "normalFallback", status: "verified" },
]);
expect(results).toHaveLength(5);
expectOnlyVerifiedOrNotDeclared(results);
expect(finalEdit).toHaveBeenCalledTimes(1);
expect(normalFallback).toHaveBeenCalledTimes(1);
});
@@ -153,28 +160,27 @@ describe("durable final capability contracts", () => {
}),
).toEqual(["draftPreview", "previewFinalization"]);
await expect(
verifyChannelMessageLiveCapabilityAdapterProofs({
adapterName: "demo",
adapter: {
live: {
capabilities: {
draftPreview: true,
previewFinalization: true,
},
const results = await verifyChannelMessageLiveCapabilityAdapterProofs({
adapterName: "demo",
adapter: {
live: {
capabilities: {
draftPreview: true,
previewFinalization: true,
},
},
proofs: {
draftPreview,
previewFinalization,
},
}),
).resolves.toEqual(
expect.arrayContaining([
{ capability: "draftPreview", status: "verified" },
{ capability: "previewFinalization", status: "verified" },
]),
);
},
proofs: {
draftPreview,
previewFinalization,
},
});
expect(verifiedEntries(results)).toEqual([
{ capability: "draftPreview", status: "verified" },
{ capability: "previewFinalization", status: "verified" },
]);
expect(results).toHaveLength(5);
expectOnlyVerifiedOrNotDeclared(results);
expect(draftPreview).toHaveBeenCalledTimes(1);
expect(previewFinalization).toHaveBeenCalledTimes(1);
});
@@ -222,26 +228,25 @@ describe("durable final capability contracts", () => {
}),
).toEqual(["after_receive_record", "after_agent_dispatch"]);
await expect(
verifyChannelMessageReceiveAckPolicyAdapterProofs({
adapterName: "demo",
adapter: {
receive: {
defaultAckPolicy: "after_agent_dispatch",
supportedAckPolicies: ["after_receive_record", "after_agent_dispatch"],
},
const results = await verifyChannelMessageReceiveAckPolicyAdapterProofs({
adapterName: "demo",
adapter: {
receive: {
defaultAckPolicy: "after_agent_dispatch",
supportedAckPolicies: ["after_receive_record", "after_agent_dispatch"],
},
proofs: {
after_receive_record: afterReceiveRecord,
after_agent_dispatch: afterAgentDispatch,
},
}),
).resolves.toEqual(
expect.arrayContaining([
{ policy: "after_receive_record", status: "verified" },
{ policy: "after_agent_dispatch", status: "verified" },
]),
);
},
proofs: {
after_receive_record: afterReceiveRecord,
after_agent_dispatch: afterAgentDispatch,
},
});
expect(verifiedEntries(results)).toEqual([
{ policy: "after_receive_record", status: "verified" },
{ policy: "after_agent_dispatch", status: "verified" },
]);
expect(results).toHaveLength(4);
expectOnlyVerifiedOrNotDeclared(results);
expect(afterReceiveRecord).toHaveBeenCalledTimes(1);
expect(afterAgentDispatch).toHaveBeenCalledTimes(1);
});
@@ -264,16 +269,17 @@ describe("durable final capability contracts", () => {
}),
).toEqual(["manual"]);
await expect(
verifyChannelMessageReceiveAckPolicyProofs({
adapterName: "demo",
receive: {
defaultAckPolicy: "manual",
supportedAckPolicies: ["manual"],
},
proofs: { manual },
}),
).resolves.toEqual(expect.arrayContaining([{ policy: "manual", status: "verified" }]));
const results = await verifyChannelMessageReceiveAckPolicyProofs({
adapterName: "demo",
receive: {
defaultAckPolicy: "manual",
supportedAckPolicies: ["manual"],
},
proofs: { manual },
});
expect(verifiedEntries(results)).toEqual([{ policy: "manual", status: "verified" }]);
expect(results).toHaveLength(4);
expectOnlyVerifiedOrNotDeclared(results);
expect(manual).toHaveBeenCalledTimes(1);
});