fix: prune unused RBAC permissions

This commit is contained in:
2026-07-17 17:43:45 +08:00
parent b3d0bafc22
commit 7edb4ff853
6 changed files with 97 additions and 29 deletions

View File

@@ -30,7 +30,13 @@ describe('RbacService seedData', () => {
),
create: jest.fn((value) => value),
save: jest.fn(async (value) => value),
find: jest.fn(async () => permissions),
find: jest.fn(async (options?: any) => {
if (options?.where?.code) {
return permissions.filter((permission) => permission.code === 'profile:view');
}
return permissions;
}),
remove: jest.fn(async (value) => value),
};
const roleRepo = {
findOne: jest.fn(async ({ where }: any) =>
@@ -58,7 +64,7 @@ describe('RbacService seedData', () => {
expect(teacherRole.name).toBe('任课老师');
expect(teacherRole.permissions.map((permission) => permission.code)).toEqual(
expect.arrayContaining([
'profile:view',
'notification:view',
'teacher-workspace:view',
'schedule:view',
'attendance:create',
@@ -67,6 +73,7 @@ describe('RbacService seedData', () => {
expect(teacherRole.permissions.map((permission) => permission.code)).not.toContain(
'schedule:create',
);
expect(teacherRole.permissions.map((permission) => permission.code)).not.toContain('profile:view');
expect(teacherRole.permissions.map((permission) => permission.code)).not.toContain('student:view');
expect(teacherRole.permissions.map((permission) => permission.code)).not.toContain('class:view');
expect(teacherRole.permissions.map((permission) => permission.code)).not.toContain('room:view');
@@ -106,7 +113,13 @@ describe('RbacService legacy role consolidation', () => {
findOne: jest.fn(async ({ where }: any) => permissions.find((item) => item.code === where.code) ?? null),
create: jest.fn((value) => value),
save: jest.fn(async (value) => value),
find: jest.fn(async () => permissions),
find: jest.fn(async (options?: any) => {
if (options?.where?.code) {
return permissions.filter((permission) => permission.code === 'profile:view');
}
return permissions;
}),
remove: jest.fn(async (value) => value),
};
const roleRepo = {
findOne: jest.fn(async () => targetRole),