import { describe, expect, test } from "bun:test"; import { assertSha256Digest, BUILD_PROTOCOL_VERSION, isSha256Digest, type BuildRequest, } from "../../shared/build-protocol"; describe("build protocol", () => { test("exposes a serializable typed request", () => { const request: BuildRequest = { version: BUILD_PROTOCOL_VERSION, id: "build-1", project: "demo", service: "web", spec: { architecture: "arm64", image: "registry.example/demo/web:latest", context: ".", buildArgs: ["NODE_ENV=production"], workspace: `sha256:${"a".repeat(64)}`, }, }; expect(JSON.parse(JSON.stringify(request))).toEqual(request); }); test("strictly validates lowercase sha256 digests", () => { expect(isSha256Digest(`sha256:${"f".repeat(64)}`)).toBe(true); expect(isSha256Digest(`sha256:${"F".repeat(64)}`)).toBe(false); expect(() => assertSha256Digest("sha256:short")).toThrow("Invalid SHA-256"); }); });