Files
HiveGrid-Wireframes/hivegrid-cloud/scripts/verify-permission-matrix.test.mjs
T

45 lines
1.9 KiB
JavaScript

import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import { describe, it } from "vitest";
import {
findMissingTestFiles,
formatMissingTestFiles,
gateLabel,
testFiles,
vitestArgs,
} from "./verify-permission-matrix.mjs";
const packageJson = JSON.parse(readFileSync("package.json", "utf8"));
describe("verify-permission-matrix", () => {
it("defines the S05 permission matrix Vitest gate without E2E commands", () => {
assert.equal(gateLabel, "Permissions Audit S05 permission matrix");
assert.deepEqual(testFiles, [
"apps/web/app/utils/services/rolesAndPermissionsService.role-matrix.test.ts",
"apps/web/app/routes/admin/audit-trails.test.tsx",
"apps/web/app/routes/app.$tenant/settings/logs/index.test.tsx",
"apps/web/app/routes/app.$tenant/settings/logs/events.test.tsx",
"apps/web/app/routes/app.$tenant/settings/logs/events.$id.test.tsx",
]);
assert.deepEqual(vitestArgs(), ["exec", "vitest", "run", ...testFiles]);
const commandText = vitestArgs().join(" ");
assert.doesNotMatch(commandText, /playwright/i);
assert.doesNotMatch(commandText, /cypress/i);
assert.doesNotMatch(commandText, /test:e2e/i);
});
it("fails fast when a required test file is missing", async () => {
const missingFiles = await findMissingTestFiles(["apps/web/app/routes/not-a-real-audit-permission.test.tsx"]);
assert.deepEqual(missingFiles, ["apps/web/app/routes/not-a-real-audit-permission.test.tsx"]);
assert.match(formatMissingTestFiles(missingFiles), /^Permissions Audit S05 permission matrix: missing required test file/);
assert.match(formatMissingTestFiles(missingFiles), /not-a-real-audit-permission\.test\.tsx/);
});
it("registers the package script for the permission matrix gate", () => {
assert.equal(packageJson.scripts["verify:permission-matrix"], "node scripts/verify-permission-matrix.mjs");
});
});