45 lines
1.9 KiB
JavaScript
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");
|
|
});
|
|
});
|