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, /