mirror of
https://github.com/morluto/rea.git
synced 2026-11-14 02:32:54 +00:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { expect, it } from "vitest";
|
|
import { browserScenarioSchema } from "../../../src/domain/browserScenario.js";
|
|
import { browserScenarioReferences } from "../../fixtures/browserScenarioReferences.js";
|
|
|
|
it.each(["query", "storage", "session-storage", "cookie"] as const)(
|
|
"preserves a declared %s reference list wider than call arguments",
|
|
(placement) => {
|
|
// Forked tests share the CLI/MCP main-thread stack, unlike domain threads.
|
|
const count = 130_000;
|
|
const parsed = browserScenarioSchema.parse(
|
|
browserScenarioReferences(placement, count),
|
|
);
|
|
const entries =
|
|
placement === "query"
|
|
? parsed.start_url.query
|
|
: placement === "cookie"
|
|
? parsed.storage.cookies[0]?.destination.query
|
|
: parsed.storage[
|
|
placement === "session-storage"
|
|
? "session_storage"
|
|
: "local_storage"
|
|
][0]?.entries;
|
|
expect(entries).toHaveLength(count);
|
|
expect(entries?.[0]).toEqual({
|
|
name: "entry_0",
|
|
value: { source: "secret", secret_id: "token" },
|
|
});
|
|
expect(entries?.at(-1)).toEqual({
|
|
name: `entry_${String(count - 1)}`,
|
|
value: { source: "secret", secret_id: "token" },
|
|
});
|
|
},
|
|
);
|
|
|
|
it("reports each distinct undeclared identity once across query and storage uses", () => {
|
|
const input = browserScenarioReferences("query", 3);
|
|
input.secrets = [];
|
|
input.storage.local_storage = [
|
|
{
|
|
origin: "http://127.0.0.1:1",
|
|
entries: [
|
|
{ name: "one", value: { source: "secret", secret_id: "other" } },
|
|
{ name: "two", value: { source: "secret", secret_id: "token" } },
|
|
{ name: "three", value: { source: "secret", secret_id: "other" } },
|
|
],
|
|
},
|
|
];
|
|
const result = browserScenarioSchema.safeParse(input);
|
|
expect(result.success).toBe(false);
|
|
expect(
|
|
result.error?.issues.map(({ path, message }) => ({ path, message })),
|
|
).toEqual([
|
|
{ path: ["secrets"], message: "Secret reference token is not declared" },
|
|
{ path: ["secrets"], message: "Secret reference other is not declared" },
|
|
]);
|
|
});
|