83 lines
2.3 KiB
TypeScript
83 lines
2.3 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
import {
|
|
applyExternalInitialImportSchema,
|
|
planExternalInitialImportSchema,
|
|
previewExternalCsvSchema,
|
|
updateExternalCsvConfigurationSchema,
|
|
} from "../src/shared/validation/external-csv.schemas.js";
|
|
import { createDefaultExternalCsvConfiguration } from "../src/external-model/csv/external-csv-contracts.js";
|
|
import { externalCsvTestColumns } from "./fixtures/revit-csv-fixtures.js";
|
|
|
|
describe("external CSV API contracts", () => {
|
|
it("accepts strict update and preview request envelopes", () => {
|
|
assert.equal(
|
|
updateExternalCsvConfigurationSchema.safeParse({
|
|
expectedRevision: 4,
|
|
configuration: createDefaultExternalCsvConfiguration(externalCsvTestColumns),
|
|
}).success,
|
|
true
|
|
);
|
|
assert.equal(
|
|
previewExternalCsvSchema.safeParse({
|
|
fileName: "revit.csv",
|
|
contentBase64: "YWJj",
|
|
}).success,
|
|
true
|
|
);
|
|
assert.equal(
|
|
planExternalInitialImportSchema.safeParse({
|
|
fileName: "revit.csv",
|
|
contentBase64: "YWJj",
|
|
}).success,
|
|
true
|
|
);
|
|
assert.equal(
|
|
applyExternalInitialImportSchema.safeParse({
|
|
expectedRevision: 5,
|
|
expectedConfigurationVersion: 2,
|
|
expectedSha256: "a".repeat(64),
|
|
fileName: "revit.csv",
|
|
contentBase64: "YWJj",
|
|
sourceName: "Revit-Gesamtmodell",
|
|
roomDecisions: [],
|
|
familyProjectDeviceDecisions: [],
|
|
}).success,
|
|
true
|
|
);
|
|
});
|
|
|
|
it("rejects stale-shaped, oversized and unknown request fields", () => {
|
|
assert.equal(
|
|
updateExternalCsvConfigurationSchema.safeParse({
|
|
expectedRevision: -1,
|
|
configuration: {},
|
|
}).success,
|
|
false
|
|
);
|
|
assert.equal(
|
|
previewExternalCsvSchema.safeParse({
|
|
fileName: "revit.csv",
|
|
contentBase64: "YWJj",
|
|
apply: true,
|
|
}).success,
|
|
false
|
|
);
|
|
assert.equal(
|
|
planExternalInitialImportSchema.safeParse({
|
|
fileName: "revit.csv",
|
|
contentBase64: "YWJj",
|
|
decisions: [],
|
|
}).success,
|
|
false
|
|
);
|
|
assert.equal(
|
|
previewExternalCsvSchema.safeParse({
|
|
fileName: "revit.csv",
|
|
contentBase64: "a".repeat(24_000_001),
|
|
}).success,
|
|
false
|
|
);
|
|
});
|
|
});
|