60 lines
3.8 KiB
JavaScript
60 lines
3.8 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { resolve } from 'node:path';
|
|
|
|
const read = (path) => readFileSync(resolve(process.cwd(), path), 'utf8');
|
|
const accountApi = read('src/api/match/account.js');
|
|
const unitApi = read('src/api/match/unitaccount.js');
|
|
const page = read('src/views/permission/account/index.vue');
|
|
const scoringDialog = read('src/views/permission/account/scoring-dialog.vue');
|
|
const sysUserService = read('../YD_Event.Admin/YD_Event.Application/User/SysUserService.cs');
|
|
const unitService = read('../YD_Event.Admin/YD_Event.Application/Unit/UnitAccountService.cs');
|
|
const deploymentSql = read('../YD_Event.Admin/二期需求/dbo.sql');
|
|
const menuSeed = JSON.parse(read('../YD_Event.Admin/YD_Event.Core/InitData/sysmenu.txt'));
|
|
const roleMenuSeed = JSON.parse(read('../YD_Event.Admin/YD_Event.Core/InitData/sysrolemenu.txt'));
|
|
|
|
const checks = [
|
|
['报名账号查询', accountApi, "http.get('/sysuser/page'"],
|
|
['报名账号新增', accountApi, "http.post('/sysuser/user'"],
|
|
['报名账号编辑', accountApi, "http.put('/sysuser/user'"],
|
|
['报名账号删除', accountApi, "http.delete('/sysuser'"],
|
|
['报名账号状态', accountApi, "http.post('/sysuser/setstatus'"],
|
|
['报名账号重置密码', accountApi, "http.post('/sysuser/reset'"],
|
|
['打分账号查询', unitApi, "http.get('/unitaccount/page'"],
|
|
['打分账号新增', unitApi, "http.post('/unitaccount/add'"],
|
|
['打分账号编辑', unitApi, "http.put('/unitaccount/edit'"],
|
|
['打分账号删除', unitApi, "http.delete('/unitaccount/delete'"],
|
|
['打分账号状态', unitApi, "http.post('/unitaccount/setStatus'"],
|
|
['打分账号重置密码', unitApi, "http.post('/unitaccount/resetPassword'"],
|
|
['报名平台页签', page, 'label="报名平台"'],
|
|
['打分系统页签', page, 'label="打分系统"'],
|
|
['打分查询固定平台', page, 'Platform: SCORING_PLATFORM'],
|
|
['打分禁用确认', page, "confirmDisable('打分系统')"],
|
|
['新增打分账号固定平台', scoringDialog, 'platform: SCORING_PLATFORM'],
|
|
['新增打分账号自动角色', unitService, 'RoleId = GetRoleId(input.Platform)'],
|
|
['报名账号数据域过滤', sysUserService, 'x.UnitPlatform == UnitAccountPlatform.EventSystem'],
|
|
['报名账号详情隔离', sysUserService, 'await GetEventSystemUserAsync(id)'],
|
|
['报名账号状态隔离', sysUserService, 'public override async Task SetStatus'],
|
|
['单位接口阻止普通账号', unitService, '该账号不是单位账号'],
|
|
['全局账号查重', unitService, 'x.Account == input.Account'],
|
|
['打分账号密码加盐', unitService, '_idGenerator.Encode(user.Id)'],
|
|
['上线SQL挂载打分账号按钮', deploymentSql, "(1081,N'打分账号-新增',2,N'system:unit:add',1047"],
|
|
['上线SQL停用旧单位菜单', deploymentSql, "WHERE Id=1080 AND Code=N'system:unit' AND DeleteMark=0"],
|
|
['上线SQL校验账号管理父级', deploymentSql, 'ParentId=1047 AND DeleteMark=0)=5'],
|
|
];
|
|
|
|
for (const [name, source, expected] of checks) {
|
|
assert.ok(source.includes(expected), `${name}:未找到 ${expected}`);
|
|
process.stdout.write(`PASS ${name}\n`);
|
|
}
|
|
|
|
const scoringButtonIds = new Set([1081, 1082, 1083, 1084, 1085]);
|
|
const scoringButtons = menuSeed.filter((item) => scoringButtonIds.has(item.Id));
|
|
assert.equal(scoringButtons.length, 5, '初始化菜单:打分账号按钮数量应为 5');
|
|
assert.ok(scoringButtons.every((item) => item.ParentId === 1047), '初始化菜单:打分账号按钮必须挂到账号管理');
|
|
assert.ok(!menuSeed.some((item) => item.Id === 1080), '初始化菜单:不应再包含单位管理菜单');
|
|
assert.ok(!roleMenuSeed.some((item) => item.MenuId === 1080), '初始化授权:不应再授权单位管理菜单');
|
|
process.stdout.write('PASS 初始化菜单与角色授权一致性\n');
|
|
|
|
process.stdout.write(`账号管理契约测试通过:${checks.length + 1}/${checks.length + 1}\n`);
|