rea/tests/runtimeCharacterization.tes...

72 lines
2.0 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
createRuntimeCharacterizationPlan,
parseRuntimeCharacterizationPlan,
} from "../src/domain/runtimeCharacterization.js";
const digest = (character: string): string => character.repeat(64);
describe("provider-neutral runtime characterization plan", () => {
it("commits preparation separately from execution approval", () => {
const plan = createRuntimeCharacterizationPlan({
schema_version: 1,
preparation_sha256: digest("5"),
artifact: {
path: "/approved/app.js",
sha256: digest("1"),
byte_length: 100,
},
runtime: {
family: "ecmascript",
provider_id: "node-javascript",
executable_path: "/usr/bin/node",
executable_sha256: digest("2"),
version: "v24.18.0",
profile_sha256: digest("3"),
},
callable: {
callable_id: "bundle.module7.hidden",
module_id: "bundle.module7",
export_name: "selected",
semantic_evidence_id: null,
selector_sha256: digest("4"),
},
working_directory: "/owned/work",
isolated_home: "/owned/home",
expected_effect: "pure",
allowed_boundaries: [],
limits: {
max_calls: 2,
max_processes: 0,
max_files: 0,
max_bytes: 65_536,
max_handles: 32,
timeout_ms: 5_000,
idle_timeout_ms: 1_000,
},
determinism: {
clock: "fixed",
randomness: "seeded",
identifiers: "deterministic",
seed: 7,
},
authority: {
preparation_approved: true,
execution_approved: false,
network: "none",
provider_owned_process_only: true,
},
});
expect(parseRuntimeCharacterizationPlan(plan)).toEqual(plan);
expect(plan.authority.execution_approved).toBe(false);
expect(() =>
parseRuntimeCharacterizationPlan({
...plan,
expected_effect: "bounded-effects",
}),
).toThrow(/digest is invalid/u);
});
});