Task 004: add demo auth and role checks
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { readFileSync } from "node:fs";
|
||||
import { dirname, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
import ts from "typescript";
|
||||
|
||||
const testDir = dirname(fileURLToPath(import.meta.url));
|
||||
const sourcePath = resolve(testDir, "../src/widgets/role-navigation/model.ts");
|
||||
const source = readFileSync(sourcePath, "utf8");
|
||||
const transpiled = ts.transpileModule(source, {
|
||||
compilerOptions: {
|
||||
module: ts.ModuleKind.CommonJS,
|
||||
target: ts.ScriptTarget.ES2022,
|
||||
},
|
||||
});
|
||||
|
||||
const exports = {};
|
||||
new Function("exports", transpiled.outputText)(exports);
|
||||
|
||||
const editorItems = exports.getRoleNavigationItems("EDITOR");
|
||||
const adminItems = exports.getRoleNavigationItems("ADMIN");
|
||||
|
||||
assert.deepEqual(
|
||||
editorItems.map((item) => item.id),
|
||||
["dashboard", "new-article", "review"],
|
||||
);
|
||||
assert.equal(
|
||||
editorItems.some((item) => item.id === "site-config" || item.id === "script-versions"),
|
||||
false,
|
||||
);
|
||||
assert.equal(
|
||||
adminItems.some((item) => item.id === "site-config"),
|
||||
true,
|
||||
);
|
||||
assert.equal(
|
||||
adminItems.some((item) => item.id === "script-versions"),
|
||||
true,
|
||||
);
|
||||
|
||||
console.log("role navigation hides Admin-only items for Editors");
|
||||
Reference in New Issue
Block a user