2026-07-30 04:20:10 +00:00
|
|
|
import { describe, expect, it } from "vitest";
|
|
|
|
|
|
2026-10-07 17:16:58 +08:00
|
|
|
import { traceJavaScriptSemanticsRequestSchema } from "./javascript/applicationWorkflowInputContracts.js";
|
2026-10-09 21:01:53 +08:00
|
|
|
import { JAVASCRIPT_FEATURE_TRACE_EXAMPLE } from "./javascript/javascriptApplicationWorkflowExamples.js";
|
2026-07-30 04:20:10 +00:00
|
|
|
import {
|
2026-09-29 16:28:46 +08:00
|
|
|
MANAGED_APPLICATION_GRAPH_EXAMPLE,
|
|
|
|
|
MANAGED_MEMBER_COMPARISON_EXAMPLE,
|
|
|
|
|
MANAGED_NATIVE_VERIFICATION_EXAMPLE,
|
2026-10-07 19:22:04 +08:00
|
|
|
} from "./managed/managedWorkflowExamples.js";
|
2026-09-29 16:28:46 +08:00
|
|
|
import {
|
2026-08-10 14:57:44 +08:00
|
|
|
compareManagedMembersReferenceInputSchema,
|
2026-07-30 04:20:10 +00:00
|
|
|
managedApplicationGraphReferenceInputSchema,
|
|
|
|
|
managedNativeVerificationReferenceInputSchema,
|
2026-10-07 19:22:04 +08:00
|
|
|
} from "./managed/managedWorkflowToolContracts.js";
|
2026-07-30 04:20:10 +00:00
|
|
|
|
2026-08-10 14:57:44 +08:00
|
|
|
describe("workflow input contracts", () => {
|
2026-09-29 16:28:46 +08:00
|
|
|
it("rejects application Evidence ID references and duplicate inline records", () => {
|
2026-07-30 04:20:10 +00:00
|
|
|
const query = {
|
|
|
|
|
seed: { kind: "literal" as const, value: "renderer" },
|
|
|
|
|
direction: "callers" as const,
|
|
|
|
|
};
|
2026-08-10 14:57:44 +08:00
|
|
|
expect(
|
|
|
|
|
traceJavaScriptSemanticsRequestSchema.safeParse({ query }).success,
|
|
|
|
|
).toBe(false);
|
2026-07-30 04:20:10 +00:00
|
|
|
|
2026-10-09 21:01:53 +08:00
|
|
|
const evidence = JAVASCRIPT_FEATURE_TRACE_EXAMPLE.application;
|
2026-08-10 14:57:44 +08:00
|
|
|
expect(
|
|
|
|
|
traceJavaScriptSemanticsRequestSchema.safeParse({
|
|
|
|
|
application: evidence,
|
|
|
|
|
application_evidence_id: evidence.evidence_id,
|
|
|
|
|
query,
|
|
|
|
|
}).success,
|
|
|
|
|
).toBe(false);
|
2026-07-30 04:20:10 +00:00
|
|
|
});
|
|
|
|
|
|
2026-09-29 16:28:46 +08:00
|
|
|
it("rejects duplicate inline managed Evidence records", () => {
|
2026-07-30 04:20:10 +00:00
|
|
|
expect(
|
|
|
|
|
compareManagedMembersReferenceInputSchema.safeParse({
|
2026-09-29 16:28:46 +08:00
|
|
|
left: MANAGED_MEMBER_COMPARISON_EXAMPLE.left,
|
|
|
|
|
right: MANAGED_MEMBER_COMPARISON_EXAMPLE.left,
|
2026-07-30 04:20:10 +00:00
|
|
|
}).success,
|
|
|
|
|
).toBe(false);
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
managedNativeVerificationReferenceInputSchema.safeParse({
|
2026-09-29 16:28:46 +08:00
|
|
|
managed_boundaries:
|
|
|
|
|
MANAGED_NATIVE_VERIFICATION_EXAMPLE.managed_boundaries,
|
|
|
|
|
native_observations: [
|
|
|
|
|
MANAGED_NATIVE_VERIFICATION_EXAMPLE.native_observations[0],
|
|
|
|
|
MANAGED_NATIVE_VERIFICATION_EXAMPLE.native_observations[0],
|
|
|
|
|
],
|
2026-07-30 04:20:10 +00:00
|
|
|
}).success,
|
|
|
|
|
).toBe(false);
|
|
|
|
|
|
|
|
|
|
expect(
|
|
|
|
|
managedApplicationGraphReferenceInputSchema.safeParse({
|
2026-09-29 16:28:46 +08:00
|
|
|
managed_artifact: MANAGED_APPLICATION_GRAPH_EXAMPLE.managed_members,
|
|
|
|
|
managed_members: MANAGED_APPLICATION_GRAPH_EXAMPLE.managed_members,
|
2026-07-30 04:20:10 +00:00
|
|
|
}).success,
|
|
|
|
|
).toBe(false);
|
|
|
|
|
expect(
|
|
|
|
|
managedApplicationGraphReferenceInputSchema.safeParse({}).success,
|
|
|
|
|
).toBe(false);
|
|
|
|
|
});
|
|
|
|
|
});
|