标准角色只允许管理员进行修改菜单权限与数据权限

This commit is contained in:
陈博文
2025-06-23 16:52:35 +08:00
parent 2046384ca0
commit 84ddc8ca6e
6 changed files with 64 additions and 4 deletions

View File

@@ -1,10 +1,13 @@
package cn.iocoder.yudao.module.system.service.permission;
import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleMenuDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMapper;
import cn.iocoder.yudao.module.system.dal.mysql.permission.RoleMenuMapper;
import cn.iocoder.yudao.module.system.dal.mysql.permission.UserRoleMapper;
import cn.iocoder.yudao.module.system.enums.permission.RoleTypeEnum;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import jakarta.annotation.Resource;
@@ -33,6 +36,8 @@ public class PermissionServiceTest extends BaseDbUnitTest {
@Resource
private UserRoleMapper userRoleMapper;
@Resource
private RoleMapper roleMapper;
@Resource
private RoleServiceImpl roleService;
@MockBean
@@ -47,7 +52,8 @@ public class PermissionServiceTest extends BaseDbUnitTest {
@Test
public void testAssignRoleMenu() {
// 准备参数
Long roleId = 1L;
RoleDO role = randomPojo(RoleDO.class, o -> o.setType(RoleTypeEnum.CUSTOM.getType()).setId(1L).setTenantId(0L));
roleMapper.insert(role);
Set<Long> menuIds = asSet(200L, 300L);
// mock 数据
RoleMenuDO roleMenu01 = randomPojo(RoleMenuDO.class).setRoleId(1L).setMenuId(100L);
@@ -58,7 +64,7 @@ public class PermissionServiceTest extends BaseDbUnitTest {
roleMenuMapper.insert(roleMenu02);
// 调用
permissionService.assignRoleMenu(roleId, menuIds);
permissionService.assignRoleMenu(role.getId(), menuIds);
// 断言
List<RoleMenuDO> roleMenuList = roleMenuMapper.selectList();
assertEquals(2, roleMenuList.size());

View File

@@ -151,7 +151,7 @@ public class RoleServiceImplTest extends BaseDbUnitTest {
@Test
public void testValidateUpdateRole_success() {
RoleDO roleDO = randomPojo(RoleDO.class);
roleMapper.insert(roleDO);
roleMapper.insert(roleDO.setType(RoleTypeEnum.CUSTOM.getType()));
// 准备参数
Long id = roleDO.getId();
@@ -159,6 +159,25 @@ public class RoleServiceImplTest extends BaseDbUnitTest {
roleService.validateRoleForUpdate(id);
}
@Test
public void testValidateUpdateRole_fail() {
RoleDO roleDO = randomPojo(RoleDO.class);
roleMapper.insert(roleDO.setType(RoleTypeEnum.SYSTEM.getType()));
// 准备参数
Long systemRoleId = roleDO.getId();
RoleDO normalRoleDO = randomPojo(RoleDO.class);
roleMapper.insert(normalRoleDO.setType(RoleTypeEnum.NORMAL.getType()));
// 准备参数
Long normalRoleId = normalRoleDO.getId();
// 调用,并断言异常
assertServiceException(() -> roleService.validateRoleForUpdate(normalRoleId),
ROLE_CAN_NOT_UPDATE_NORMAL_TYPE_ROLE);
assertServiceException(() -> roleService.validateRoleForUpdate(systemRoleId),
ROLE_CAN_NOT_UPDATE_SYSTEM_TYPE_ROLE);
}
@Test
public void testValidateUpdateRole_roleIdNotExist() {
assertServiceException(() -> roleService.validateRoleForUpdate(randomLongId()), ROLE_NOT_EXISTS);