mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-01 18:52:20 +08:00
fix:test
This commit is contained in:
parent
2aef273284
commit
5268a16bcf
@ -167,103 +167,6 @@ describe('desktopRoutes:listAccessible', () => {
|
|||||||
expect(response.body.data[0].title).toBe('page4');
|
expect(response.body.data[0].title).toBe('page4');
|
||||||
expect(response.body.data[0].children.length).toBe(2);
|
expect(response.body.data[0].children.length).toBe(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it.only('should test role permissions and route visibility with group and tabs', async () => {
|
|
||||||
// 1. 定义一个表
|
|
||||||
await db.getCollection('collections').repository.create({
|
|
||||||
values: {
|
|
||||||
name: 'testTable',
|
|
||||||
title: 'Test Table',
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
type: 'string',
|
|
||||||
name: 'name',
|
|
||||||
interface: 'input',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// 2. 定义一个角色
|
|
||||||
const customRole = await db.getRepository('roles').create({
|
|
||||||
values: { name: 'customRole', title: 'Custom Role' },
|
|
||||||
});
|
|
||||||
|
|
||||||
// 3. 给该角色设置主数据源 action 权限所有人可见
|
|
||||||
await db.getRepository('rolesResourcesActions').create({
|
|
||||||
values: {
|
|
||||||
roleName: customRole.name,
|
|
||||||
resourceName: 'testTable',
|
|
||||||
actionName: '*',
|
|
||||||
strategy: {
|
|
||||||
actions: ['create', 'view', 'update', 'destroy'],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
// 4. 添加1个分组和2个子tab路由a,b
|
|
||||||
const groupRoute = await db.getRepository('desktopRoutes').create({
|
|
||||||
values: {
|
|
||||||
type: 'group',
|
|
||||||
title: 'testGroup',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const [routeA, routeB] = await db.getRepository('desktopRoutes').create({
|
|
||||||
values: [
|
|
||||||
{ type: 'tab', title: 'routeA', parentId: groupRoute.id },
|
|
||||||
{ type: 'tab', title: 'routeB', parentId: groupRoute.id },
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 使用 root 角色配置权限
|
|
||||||
const rootUser = await db.getRepository('users').create({
|
|
||||||
values: { roles: ['root'] },
|
|
||||||
});
|
|
||||||
const rootAgent = await app.agent().login(rootUser);
|
|
||||||
|
|
||||||
// 清除默认权限
|
|
||||||
await rootAgent.resource('roles.desktopRoutes', customRole.name).remove({
|
|
||||||
values: [1, 2, 3, 4, 5, 6, groupRoute.id, routeA.id, routeB.id],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 5. 设置其中一个路由a可见
|
|
||||||
await rootAgent.resource('roles.desktopRoutes', customRole.name).add({
|
|
||||||
values: [groupRoute.id, routeA.id],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 创建测试用户
|
|
||||||
const testUser = await db.getRepository('users').create({
|
|
||||||
values: { roles: [customRole.name] },
|
|
||||||
});
|
|
||||||
const testAgent = await app.agent().login(testUser);
|
|
||||||
|
|
||||||
// 验证只有routeA可见
|
|
||||||
let response = await testAgent.resource('desktopRoutes').listAccessible();
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.data.length).toBe(1);
|
|
||||||
expect(response.body.data[0].title).toBe('testGroup');
|
|
||||||
expect(response.body.data[0].children.length).toBe(1);
|
|
||||||
expect(response.body.data[0].children[0].title).toBe('routeA');
|
|
||||||
|
|
||||||
// 6. 设置所有路由可见
|
|
||||||
await rootAgent.resource('roles.desktopRoutes', customRole.name).add({
|
|
||||||
values: [routeB.id],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 7. 访问desktopRoutes:listAccessible API
|
|
||||||
response = await testAgent.resource('desktopRoutes').listAccessible();
|
|
||||||
|
|
||||||
// 8. 断言API结果,a,b都有children
|
|
||||||
expect(response.status).toBe(200);
|
|
||||||
expect(response.body.data.length).toBe(1);
|
|
||||||
expect(response.body.data[0].title).toBe('testGroup');
|
|
||||||
expect(response.body.data[0].children.length).toBe(2);
|
|
||||||
|
|
||||||
const childTitles = response.body.data[0].children.map(child => child.title);
|
|
||||||
expect(childTitles).toContain('routeA');
|
|
||||||
expect(childTitles).toContain('routeB');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('desktopRoutes', async () => {
|
describe('desktopRoutes', async () => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user