Files
jiapu/tests/admin-permission-pages.test.js
T
2026-08-03 16:49:38 +08:00

85 lines
3.4 KiB
JavaScript

const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const test = require('node:test');
const AdminPermissionPages = require('../public/js/admin-permission-pages.js');
const root = path.resolve(__dirname, '..');
function read(relativePath) {
return fs.readFileSync(path.join(root, relativePath), 'utf8');
}
test('管理员权限页只从当前家谱上下文读取安全编号', () => {
assert.equal(AdminPermissionPages.getCurrentGenealogyId('?genealogyId=2062179707935264769'), '2062179707935264769');
assert.equal(AdminPermissionPages.getCurrentGenealogyId('?genealogyId=0'), '');
assert.equal(AdminPermissionPages.getCurrentGenealogyId('?genealogyId=unsafe'), '');
});
test('管理员权限概览只接受当前家谱的角色与严格布尔能力字段', () => {
assert.deepEqual(AdminPermissionPages.normalizePermissionOverview({
genealogyId: '2062179707935264769',
roleType: 'admin',
canManage: true,
canEditContent: false,
ownerUserId: '2062179707935264701'
}, '2062179707935264769'), {
genealogyId: '2062179707935264769',
roleType: 'admin',
canManage: true,
canEditContent: false
});
assert.equal(AdminPermissionPages.normalizePermissionOverview({
genealogyId: '2062179707935264768',
roleType: 'admin',
canManage: true,
canEditContent: false
}, '2062179707935264769'), null);
assert.equal(AdminPermissionPages.normalizePermissionOverview({
genealogyId: '2062179707935264769',
roleType: 'admin',
canManage: 'true',
canEditContent: false
}, '2062179707935264769').canManage, false);
assert.equal(AdminPermissionPages.normalizePermissionOverview({
genealogyId: '2062179707935264769',
roleType: 'legacy-role',
canManage: true,
canEditContent: false
}, '2062179707935264769'), null);
});
test('权限概览依据当前能力展示可管理、审核与内容维护状态', () => {
const admin = {
genealogyId: '2062179707935264769',
roleType: 'admin',
canManage: true,
canEditContent: false
};
const member = {
genealogyId: '2062179707935264769',
roleType: 'member',
canManage: false,
canEditContent: false
};
assert.match(AdminPermissionPages.renderCurrentPermissions(admin), /当前角色[\s\S]*管理员/);
assert.match(AdminPermissionPages.renderCurrentPermissions(admin), /成员角色维护[\s\S]*可管理/);
assert.match(AdminPermissionPages.renderCurrentPermissions(admin), /内容维护[\s\S]*可维护/);
assert.match(AdminPermissionPages.renderCurrentPermissions(member), /入谱审核[\s\S]*不可审核/);
assert.equal(AdminPermissionPages.canMaintainContent({ canManage: 'true', canEditContent: false }), false);
});
test('管理员权限页使用既有家谱详情接口和统一状态,不提供 App 粒度授权表单', () => {
const page = read('profile-admin-permissions.html');
const script = read('public/js/admin-permission-pages.js');
assert.match(page, /data-admin-permission-current[\s\S]*data-api-state="loading"/);
assert.match(page, /src="public\/js\/admin-permission-pages\.js"/);
assert.match(script, /api\.genealogyDetail\(genealogyId\)/);
assert.match(script, /root\.ProfileUI && root\.ProfileUI\.setApiState/);
assert.match(script, /当前账号无权查看该家谱权限。/);
assert.doesNotMatch(page, /<input|<select|<form/);
assert.doesNotMatch(script, /addManageUser|getManagePower|auth_str/);
});