71 lines
3.0 KiB
TypeScript
71 lines
3.0 KiB
TypeScript
import { expect, test, vi } from "vitest";
|
|
import { buildInstallationContract } from "../src/workspaces/contracts.js";
|
|
import {
|
|
createProductionWorkspaceDiagnoser,
|
|
createWorkspaceDiagnoser,
|
|
type DiagnosticAdapters,
|
|
} from "../src/workspaces/diagnostics.js";
|
|
import {
|
|
resolveBinding,
|
|
resolveEvidenceBinding,
|
|
resolveRuntimeBindings,
|
|
} from "../src/workspaces/bindings.js";
|
|
import { renderRuntimeConfig, type RuntimeBindings } from "../src/workspaces/runtime-renderer.js";
|
|
|
|
const unsupportedWorkspace = {
|
|
workspace: { schema_version: 2, id: "legacy-workspace", name: "Legacy", language: "en" },
|
|
dwh: {
|
|
engine: "postgres", database: "warehouse", schema: "public",
|
|
supported_transports: ["postgres_direct"],
|
|
},
|
|
semantic_index: {
|
|
vector_store: {
|
|
engine: "pgvector", database: "warehouse", schema: "vectors",
|
|
collection: "documents", dimensions: 768, distance: "cosine",
|
|
supported_transports: ["pgvector_direct"],
|
|
},
|
|
embedding: { provider: "ollama_compatible", model: "legacy", dimensions: 768 },
|
|
},
|
|
llm_policy: { allowed: ["zai/glm-5.2"] },
|
|
};
|
|
|
|
const bindings: RuntimeBindings = {
|
|
dwh: { transport: "postgres_direct", values: {}, missing: [] },
|
|
evidence: { values: {}, missing: [] },
|
|
};
|
|
|
|
const adapters: DiagnosticAdapters = {
|
|
probeConnector: vi.fn(),
|
|
inspectQdrant: vi.fn(),
|
|
probeEmbedding: vi.fn(),
|
|
};
|
|
|
|
test("renderer rejects callers that bypass the schema-v3 type contract", () => {
|
|
expect(() => renderRuntimeConfig(unsupportedWorkspace as never, bindings, {
|
|
sessions: "/data/sessions", artifacts: "/data/artifacts", indexes: "/data/indexes",
|
|
})).toThrow("Runtime renderer supports only workspace schema version 3");
|
|
});
|
|
|
|
test("installation contract rejects callers that bypass the schema-v3 type contract", () => {
|
|
expect(() => buildInstallationContract(unsupportedWorkspace as never))
|
|
.toThrow("Installation contract supports only workspace schema version 3");
|
|
});
|
|
|
|
test("binding entry points reject callers that bypass the schema-v3 type contract", () => {
|
|
expect(() => resolveBinding(unsupportedWorkspace as never, "DWH", {}, []))
|
|
.toThrow("Workspace bindings support only workspace schema version 3");
|
|
expect(() => resolveEvidenceBinding(unsupportedWorkspace as never, {}, []))
|
|
.toThrow("Workspace bindings support only workspace schema version 3");
|
|
expect(() => resolveRuntimeBindings(unsupportedWorkspace as never, {}, []))
|
|
.toThrow("Workspace bindings support only workspace schema version 3");
|
|
});
|
|
|
|
test("diagnoser factories reject callers that bypass the schema-v3 type contract", async () => {
|
|
await expect(createWorkspaceDiagnoser(adapters)(unsupportedWorkspace as never, bindings, {
|
|
writeProbe: false,
|
|
})).rejects.toThrow("Workspace diagnoser supports only workspace schema version 3");
|
|
await expect(createProductionWorkspaceDiagnoser(5_000, adapters)(
|
|
unsupportedWorkspace as never, bindings, { writeProbe: false },
|
|
)).rejects.toThrow("Workspace diagnoser supports only workspace schema version 3");
|
|
});
|