63 lines
3.0 KiB
JavaScript
63 lines
3.0 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const test = require('node:test');
|
|
|
|
const ArticlePages = require('../public/js/article-pages.js');
|
|
const AlbumPages = require('../public/js/album-pages.js');
|
|
const CeremonyPages = require('../public/js/ceremony-admin-pages.js');
|
|
const FeedPages = require('../public/js/feed-pages.js');
|
|
const GenerationPages = require('../public/js/generation-pages.js');
|
|
const GrowthPages = require('../public/js/growth-pages.js');
|
|
const LineagePages = require('../public/js/lineage-pages.js');
|
|
const MemoPages = require('../public/js/memo-pages.js');
|
|
const MeritPages = require('../public/js/merit-pages.js');
|
|
const RelativePages = require('../public/js/relative-pages.js');
|
|
const VideoPages = require('../public/js/video-pages.js');
|
|
|
|
const contentCapabilities = [
|
|
['谱文', ArticlePages.canEditArticles],
|
|
['相册', AlbumPages.canEditAlbums],
|
|
['仪式', CeremonyPages.canEditCeremonies],
|
|
['动态', FeedPages.canEditFeeds],
|
|
['字辈', GenerationPages.canEditGenerations],
|
|
['成长记录', GrowthPages.canEditRecords],
|
|
['备忘录', MemoPages.canEditRecords],
|
|
['功德簿', MeritPages.canEditRecords],
|
|
['亲属记录', RelativePages.canEditRecords],
|
|
['视频', VideoPages.canEditVideos]
|
|
];
|
|
|
|
test('内容模块只信任家谱详情返回的严格编辑能力', () => {
|
|
contentCapabilities.forEach(function (entry) {
|
|
const label = entry[0];
|
|
const canEdit = entry[1];
|
|
|
|
assert.equal(typeof canEdit, 'function', label + '缺少编辑能力判断');
|
|
assert.equal(canEdit({ canEditContent: true }), true, label + '应允许内容编辑者写入');
|
|
assert.equal(canEdit({ canManage: true }), true, label + '应允许家谱管理者写入');
|
|
assert.equal(canEdit({ canEditContent: 'true' }), false, label + '不能把字符串权限当作授权');
|
|
assert.equal(canEdit({ canManage: 1 }), false, label + '不能把数值权限当作授权');
|
|
assert.equal(canEdit({ canEditContent: false, canManage: false }), false, label + '不能向无权限成员开放写入');
|
|
});
|
|
});
|
|
|
|
test('世系编辑与成员、入谱审核分别收紧到正式能力字段', () => {
|
|
assert.deepEqual(LineagePages.normalizeLineageAccess({ canEditContent: true, canManage: false }), {
|
|
canEditContent: true
|
|
});
|
|
assert.deepEqual(LineagePages.normalizeLineageAccess({ canEditContent: false, canManage: true }), {
|
|
canEditContent: false
|
|
});
|
|
assert.deepEqual(LineagePages.normalizeLineageAccess({ canEditContent: 'true' }), {
|
|
canEditContent: false
|
|
});
|
|
|
|
const memberScript = fs.readFileSync(path.join(__dirname, '..', 'public', 'js', 'member-admin-pages.js'), 'utf8');
|
|
const reviewScript = fs.readFileSync(path.join(__dirname, '..', 'public', 'js', 'join-review-pages.js'), 'utf8');
|
|
|
|
assert.match(memberScript, /managementAccess = detail\.canManage === true;/);
|
|
assert.match(memberScript, /function canTransferOwner\(role, canManage\)[\s\S]+?role === 'owner' && canManage === true/);
|
|
assert.match(reviewScript, /canManage = detail && detail\.canManage === true;/);
|
|
});
|