feat: ship enterprise control and desktop governance
This commit is contained in:
113
tests/boss-admin-web-source.test.ts
Normal file
113
tests/boss-admin-web-source.test.ts
Normal file
@@ -0,0 +1,113 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
import { readFile } from "node:fs/promises";
|
||||
|
||||
async function readSource(path: string) {
|
||||
return readFile(new URL(path, import.meta.url), "utf8");
|
||||
}
|
||||
|
||||
test("independent Boss admin web app declares Vue Ant Design Vue runtime", async () => {
|
||||
const source = await readSource("../apps/boss-admin-web/package.json");
|
||||
const pkg = JSON.parse(source);
|
||||
|
||||
assert.equal(pkg.name, "@boss/admin-web");
|
||||
assert.equal(pkg.private, true);
|
||||
assert.match(pkg.scripts.dev, /vite/);
|
||||
assert.match(pkg.scripts.build, /vite build/);
|
||||
assert.ok(pkg.dependencies.vue);
|
||||
assert.ok(pkg.dependencies["ant-design-vue"]);
|
||||
assert.ok(pkg.devDependencies.vite);
|
||||
assert.ok(pkg.devDependencies["@vitejs/plugin-vue"]);
|
||||
});
|
||||
|
||||
test("independent Boss admin web app uses the backoffice BFF with cookie session", async () => {
|
||||
const apiSource = await readSource("../apps/boss-admin-web/src/api/bossAdmin.ts");
|
||||
|
||||
assert.match(apiSource, /\/api\/v1\/admin\/backoffice/);
|
||||
assert.match(apiSource, /\/api\/v1\/admin\/access/);
|
||||
assert.match(apiSource, /\/api\/v1\/admin\/risks\/actions/);
|
||||
assert.match(apiSource, /\/api\/v1\/admin\/skills\/requests/);
|
||||
assert.match(apiSource, /credentials:\s*["']include["']/);
|
||||
assert.match(apiSource, /menuTree/);
|
||||
assert.match(apiSource, /tenants/);
|
||||
assert.match(apiSource, /resourceGroups/);
|
||||
for (const fn of ["postAdminAccess", "postRiskAction", "postSkillLifecycleRequest"]) {
|
||||
assert.match(apiSource, new RegExp(`function\\s+${fn}|const\\s+${fn}`));
|
||||
}
|
||||
});
|
||||
|
||||
test("independent Boss admin web app includes enterprise management sections", async () => {
|
||||
const appSource = await readSource("../apps/boss-admin-web/src/App.vue");
|
||||
|
||||
for (const label of [
|
||||
"Boss 企业后台",
|
||||
"工作台",
|
||||
"租户管理",
|
||||
"账号管理",
|
||||
"角色权限",
|
||||
"资源授权",
|
||||
"Skill 中心",
|
||||
"风险告警",
|
||||
"审计日志",
|
||||
]) {
|
||||
assert.match(appSource, new RegExp(label));
|
||||
}
|
||||
assert.match(appSource, /menuTree/);
|
||||
assert.match(appSource, /workbench/);
|
||||
assert.match(appSource, /tenants/);
|
||||
});
|
||||
|
||||
test("independent Boss admin web app exposes management actions instead of read only tables", async () => {
|
||||
const appSource = await readSource("../apps/boss-admin-web/src/App.vue");
|
||||
|
||||
for (const label of [
|
||||
"新建租户",
|
||||
"启用租户",
|
||||
"停用租户",
|
||||
"新建账号",
|
||||
"重置密码",
|
||||
"离职回收",
|
||||
"分配资源",
|
||||
"套用权限模板",
|
||||
"撤销授权",
|
||||
"指派负责人",
|
||||
"设置 SLA",
|
||||
"确认风险",
|
||||
"关闭风险",
|
||||
"创建工单",
|
||||
"创建 Skill 请求",
|
||||
]) {
|
||||
assert.match(appSource, new RegExp(label));
|
||||
}
|
||||
|
||||
for (const action of [
|
||||
"upsert_company",
|
||||
"set_company_status",
|
||||
"upsert_account",
|
||||
"reset_account_password",
|
||||
"reclaim_account",
|
||||
"apply_template",
|
||||
"grant_device",
|
||||
"grant_project",
|
||||
"grant_skill",
|
||||
"revoke_grant",
|
||||
]) {
|
||||
assert.match(appSource, new RegExp(action));
|
||||
}
|
||||
});
|
||||
|
||||
test("root Next project isolates the independent Vue admin workspace", async () => {
|
||||
const [tsconfigSource, eslintSource, rootPkgSource] = await Promise.all([
|
||||
readSource("../tsconfig.json"),
|
||||
readSource("../eslint.config.mjs"),
|
||||
readSource("../package.json"),
|
||||
]);
|
||||
const tsconfig = JSON.parse(tsconfigSource);
|
||||
const rootPkg = JSON.parse(rootPkgSource);
|
||||
|
||||
assert.ok(tsconfig.exclude.includes("apps/boss-admin-web/**"));
|
||||
assert.match(eslintSource, /apps\/boss-admin-web\/\*\*/);
|
||||
assert.match(eslintSource, /public\/admin-web\/\*\*/);
|
||||
assert.match(rootPkg.scripts["admin:web:dev"], /apps\/boss-admin-web/);
|
||||
assert.match(rootPkg.scripts["admin:web:build"], /apps\/boss-admin-web/);
|
||||
});
|
||||
Reference in New Issue
Block a user