@@ -10,6 +10,7 @@ import com.yunhai.userbase.entity.SysUser;
|
||||
import com.yunhai.userbase.entity.SysUserGroupRel;
|
||||
import com.yunhai.userbase.enums.GroupTypeEnum;
|
||||
import com.yunhai.userbase.enums.UserTypeEnum;
|
||||
import com.yunhai.userbase.model.GroupSnapshot;
|
||||
import com.yunhai.userbase.model.groupauthz.UserPermissionCategoryVo;
|
||||
import com.yunhai.userbase.model.groupauthz.UserPermissionModuleVo;
|
||||
import com.yunhai.userbase.repository.AppCategoryRepository;
|
||||
@@ -47,13 +48,16 @@ import static org.mockito.Mockito.when;
|
||||
* GroupAuthzService 权限计算单元测试。
|
||||
* 重点验证「就近原则 + 子组继承闸门」:沿组的祖先链向上,取<b>最近</b>的有显式模块配置的组作为该应用唯一权限来源,
|
||||
* 只返回该来源组的模块集合(不向上合并更远的祖先);且<b>来源组若为祖先,必须勾选子组继承(inheritFlag=true)才下放</b>
|
||||
* (修复「子组只勾1个却继承学校全部」「返回3个而非最近祖先的2个」「父级未勾子组继承仍被继承」三类 bug)。
|
||||
* (修复「子组只勾1个却继承学校全部」「返回3个而非最近祖先的2个」「父级未勾子组继承仍被继承」三类 bug)。<br>
|
||||
* 组全量数据现经 groupSnapshot 快照提供(buildAllGroupMap 改造),故统一 stub snapshot 而非 repository.findAll。
|
||||
*/
|
||||
class GroupAuthzServiceTest {
|
||||
|
||||
@InjectMocks
|
||||
private GroupAuthzService groupAuthzService;
|
||||
|
||||
@Mock
|
||||
private GroupSnapshotService groupSnapshotService;
|
||||
@Mock
|
||||
private SysGroupAppRelRepository sysGroupAppRelRepository;
|
||||
@Mock
|
||||
@@ -93,7 +97,7 @@ class GroupAuthzServiceTest {
|
||||
* └─ 30 学生组
|
||||
*/
|
||||
private void initGroups() {
|
||||
when(sysGroupRepository.findAll()).thenReturn(Arrays.asList(
|
||||
List<SysGroup> groups = Arrays.asList(
|
||||
group(5, "教育云中心", 0, GroupTypeEnum.NORMAL_GROUP),
|
||||
group(27, "信阳教育局", 5, GroupTypeEnum.AREA_GROUP),
|
||||
group(16, "云海中学", 27, GroupTypeEnum.SCHOOL_GROUP),
|
||||
@@ -101,7 +105,8 @@ class GroupAuthzServiceTest {
|
||||
group(29, "教师组", 16, GroupTypeEnum.TEACHER_GROUP),
|
||||
group(30, "学生组", 16, GroupTypeEnum.STUDENT_GROUP),
|
||||
group(31, "英语组", 29, GroupTypeEnum.NORMAL_GROUP)
|
||||
));
|
||||
);
|
||||
when(groupSnapshotService.snapshot()).thenReturn(new GroupSnapshot(groups));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user