package com.ruoyi.system.controller; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.system.api.domain.SysRole; import com.ruoyi.system.domain.dto.RoleUpdateDto; import com.ruoyi.system.service.ISysRoleService; import org.junit.jupiter.api.Test; import org.springframework.test.util.ReflectionTestUtils; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; /** * 公司管理员内置角色(company_admin)编辑拦截 */ class SysRoleControllerTest { @Test void roleUpdateRejectsCompanyAdminBuiltinRole() { SysRoleController controller = new SysRoleController(); ISysRoleService roleService = mock(ISysRoleService.class); ReflectionTestUtils.setField(controller, "roleService", roleService); SysRole builtin = new SysRole(); builtin.setRoleId(75L); builtin.setRoleKey("company_admin"); builtin.setRoleName("公司管理员"); when(roleService.selectRoleById(75L)).thenReturn(builtin); RoleUpdateDto dto = new RoleUpdateDto(); dto.setRoleId(75L); dto.setRoleName("公司管理员"); AjaxResult result = controller.roleUpdate(dto); assertEquals("公司管理员角色不可编辑", result.get("msg")); verify(roleService, never()).updateRole(any(SysRole.class)); } @Test void roleUpdateRejectsCompanyAdminBuiltinRoleByName() { // 兼容历史数据:仅角色名匹配(如手工建的角色)同样拦截 SysRoleController controller = new SysRoleController(); ISysRoleService roleService = mock(ISysRoleService.class); ReflectionTestUtils.setField(controller, "roleService", roleService); SysRole builtin = new SysRole(); builtin.setRoleId(76L); builtin.setRoleKey("custom_key"); builtin.setRoleName("公司管理员"); when(roleService.selectRoleById(76L)).thenReturn(builtin); RoleUpdateDto dto = new RoleUpdateDto(); dto.setRoleId(76L); dto.setRoleName("公司管理员"); AjaxResult result = controller.roleUpdate(dto); assertEquals("公司管理员角色不可编辑", result.get("msg")); verify(roleService, never()).updateRole(any(SysRole.class)); } }