33 lines
1003 B
TypeScript
33 lines
1003 B
TypeScript
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");
|
|
});
|
|
});
|