mirror of
https://gitee.com/fit2cloud-feizhiyun/MeterSphere.git
synced 2024-11-29 18:48:13 +08:00
feat(系统设置): 用户组查询设置默认排序
--story=1012250 --user=陈建星 系统设置-用户组管理 https://www.tapd.cn/55049933/s/1388860
This commit is contained in:
parent
82faaf8638
commit
62c3502848
@ -20,8 +20,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static io.metersphere.sdk.constants.InternalUserRole.MEMBER;
|
import static io.metersphere.sdk.constants.InternalUserRole.MEMBER;
|
||||||
import static io.metersphere.system.controller.result.SystemResultCode.*;
|
import static io.metersphere.system.controller.result.SystemResultCode.*;
|
||||||
@ -44,7 +43,20 @@ public class GlobalUserRoleService extends BaseUserRoleService {
|
|||||||
public List<UserRole> list() {
|
public List<UserRole> list() {
|
||||||
UserRoleExample example = new UserRoleExample();
|
UserRoleExample example = new UserRoleExample();
|
||||||
example.createCriteria().andScopeIdEqualTo(UserRoleScope.GLOBAL);
|
example.createCriteria().andScopeIdEqualTo(UserRoleScope.GLOBAL);
|
||||||
return userRoleMapper.selectByExample(example);
|
List<UserRole> userRoles = userRoleMapper.selectByExample(example);
|
||||||
|
// 先按照类型排序,再按照创建时间排序
|
||||||
|
userRoles.sort(Comparator.comparingInt(this::getTypeOrder)
|
||||||
|
.thenComparing(UserRole::getCreateTime));
|
||||||
|
return userRoles;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getTypeOrder(UserRole userRole) {
|
||||||
|
Map<String, Integer> typeOrderMap = new HashMap<>(3) {{
|
||||||
|
put(UserRoleType.SYSTEM.name(), 1);
|
||||||
|
put(UserRoleType.ORGANIZATION.name(), 2);
|
||||||
|
put(UserRoleType.PROJECT.name(), 3);
|
||||||
|
}};
|
||||||
|
return typeOrderMap.getOrDefault(userRole.getType(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,27 +64,6 @@ class GlobalUserRoleControllerTests extends BaseTest {
|
|||||||
return BASE_PATH;
|
return BASE_PATH;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void list() throws Exception {
|
|
||||||
// @@请求成功
|
|
||||||
MvcResult mvcResult = this.requestGetWithOk(DEFAULT_LIST)
|
|
||||||
.andReturn();
|
|
||||||
List<UserRole> userRoles = getResultDataArray(mvcResult, UserRole.class);
|
|
||||||
|
|
||||||
// 校验是否是全局用户组
|
|
||||||
userRoles.forEach(item -> Assertions.assertTrue(StringUtils.equalsIgnoreCase(item.getScopeId(), UserRoleScope.GLOBAL)));
|
|
||||||
|
|
||||||
// 校验是否包含全部的内置用户组
|
|
||||||
List<String> userRoleIds = userRoles.stream().map(UserRole::getId).toList();
|
|
||||||
List<String> internalUserRoleIds = Arrays.stream(InternalUserRole.values())
|
|
||||||
.map(InternalUserRole::getValue)
|
|
||||||
.toList();
|
|
||||||
Assertions.assertTrue(CollectionUtils.isSubCollection(internalUserRoleIds, userRoleIds));
|
|
||||||
|
|
||||||
// @@校验权限
|
|
||||||
requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_READ, DEFAULT_LIST);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(0)
|
@Order(0)
|
||||||
void add() throws Exception {
|
void add() throws Exception {
|
||||||
@ -161,6 +140,98 @@ class GlobalUserRoleControllerTests extends BaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@Order(2)
|
||||||
|
void list() throws Exception {
|
||||||
|
// @@请求成功
|
||||||
|
MvcResult mvcResult = this.requestGetWithOk(DEFAULT_LIST)
|
||||||
|
.andReturn();
|
||||||
|
List<UserRole> userRoles = getResultDataArray(mvcResult, UserRole.class);
|
||||||
|
|
||||||
|
// 校验是否是全局用户组
|
||||||
|
userRoles.forEach(item -> Assertions.assertTrue(StringUtils.equalsIgnoreCase(item.getScopeId(), UserRoleScope.GLOBAL)));
|
||||||
|
|
||||||
|
// 校验是否包含全部的内置用户组
|
||||||
|
List<String> userRoleIds = userRoles.stream().map(UserRole::getId).toList();
|
||||||
|
List<String> internalUserRoleIds = Arrays.stream(InternalUserRole.values())
|
||||||
|
.map(InternalUserRole::getValue)
|
||||||
|
.toList();
|
||||||
|
Assertions.assertTrue(CollectionUtils.isSubCollection(internalUserRoleIds, userRoleIds));
|
||||||
|
|
||||||
|
// 校验排序是否正常
|
||||||
|
Map<String, Integer> typeOrderMap = new HashMap<>(3) {{
|
||||||
|
put(UserRoleType.SYSTEM.name(), 1);
|
||||||
|
put(UserRoleType.ORGANIZATION.name(), 2);
|
||||||
|
put(UserRoleType.PROJECT.name(), 3);
|
||||||
|
}};
|
||||||
|
String userRoleType = UserRoleType.SYSTEM.name();
|
||||||
|
long lastCreateTime = -1;
|
||||||
|
for (UserRole userRole : userRoles) {
|
||||||
|
// 判断是否按照 type 为 SYSTEM,ORGANIZATION, PROJECT 排序
|
||||||
|
if (typeOrderMap.get(userRole.getType()) < typeOrderMap.get(userRoleType)) {
|
||||||
|
Assertions.fail();
|
||||||
|
} else if (typeOrderMap.get(userRole.getType()).equals(typeOrderMap.get(userRoleType))) {
|
||||||
|
// 相等,比较创建时间
|
||||||
|
if (userRole.getCreateTime() < lastCreateTime) {
|
||||||
|
Assertions.fail();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lastCreateTime = userRole.getCreateTime();
|
||||||
|
userRoleType = userRole.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
// @@校验权限
|
||||||
|
requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_READ, DEFAULT_LIST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(3)
|
||||||
|
void updatePermissionSetting() throws Exception {
|
||||||
|
PermissionSettingUpdateRequest request = new PermissionSettingUpdateRequest();
|
||||||
|
request.setPermissions(new ArrayList<>() {{
|
||||||
|
PermissionSettingUpdateRequest.PermissionUpdateRequest permission1
|
||||||
|
= new PermissionSettingUpdateRequest.PermissionUpdateRequest();
|
||||||
|
permission1.setEnable(true);
|
||||||
|
permission1.setId(PermissionConstants.SYSTEM_USER_READ);
|
||||||
|
add(permission1);
|
||||||
|
PermissionSettingUpdateRequest.PermissionUpdateRequest permission2
|
||||||
|
= new PermissionSettingUpdateRequest.PermissionUpdateRequest();
|
||||||
|
permission2.setEnable(false);
|
||||||
|
permission2.setId(PermissionConstants.SYSTEM_USER_ROLE_READ);
|
||||||
|
add(permission2);
|
||||||
|
}});
|
||||||
|
|
||||||
|
// @@请求成功
|
||||||
|
request.setUserRoleId(addUserRole.getId());
|
||||||
|
this.requestPostWithOk(PERMISSION_UPDATE, request);
|
||||||
|
// 获取该用户组拥有的权限
|
||||||
|
Set<String> permissionIds = baseUserRolePermissionService.getPermissionIdSetByRoleId(request.getUserRoleId());
|
||||||
|
Set<String> requestPermissionIds = request.getPermissions().stream()
|
||||||
|
.filter(PermissionSettingUpdateRequest.PermissionUpdateRequest::getEnable)
|
||||||
|
.map(PermissionSettingUpdateRequest.PermissionUpdateRequest::getId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
// 校验请求成功数据
|
||||||
|
Assertions.assertEquals(requestPermissionIds, permissionIds);
|
||||||
|
|
||||||
|
// @@校验日志
|
||||||
|
checkLog(request.getUserRoleId(), OperationLogType.UPDATE);
|
||||||
|
|
||||||
|
// @@操作非全局用户组异常
|
||||||
|
request.setUserRoleId(getNonGlobalUserRole().getId());
|
||||||
|
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), GLOBAL_USER_ROLE_PERMISSION);
|
||||||
|
|
||||||
|
// @@操作内置用户组异常
|
||||||
|
request.setUserRoleId(ADMIN.getValue());
|
||||||
|
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), INTERNAL_USER_ROLE_PERMISSION);
|
||||||
|
|
||||||
|
// @@异常参数校验
|
||||||
|
paramValidateTest(PermissionSettingUpdateRequestDefinition.class, PERMISSION_UPDATE);
|
||||||
|
|
||||||
|
// @@校验权限
|
||||||
|
requestPostPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_UPDATE, PERMISSION_UPDATE, request);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(4)
|
||||||
void getPermissionSetting() throws Exception {
|
void getPermissionSetting() throws Exception {
|
||||||
// @@请求成功
|
// @@请求成功
|
||||||
MvcResult mvcResult = this.requestGetWithOkAndReturn(PERMISSION_SETTING, ADMIN.getValue());
|
MvcResult mvcResult = this.requestGetWithOkAndReturn(PERMISSION_SETTING, ADMIN.getValue());
|
||||||
@ -210,54 +281,7 @@ class GlobalUserRoleControllerTests extends BaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2)
|
@Order(5)
|
||||||
void updatePermissionSetting() throws Exception {
|
|
||||||
PermissionSettingUpdateRequest request = new PermissionSettingUpdateRequest();
|
|
||||||
request.setPermissions(new ArrayList<>() {{
|
|
||||||
PermissionSettingUpdateRequest.PermissionUpdateRequest permission1
|
|
||||||
= new PermissionSettingUpdateRequest.PermissionUpdateRequest();
|
|
||||||
permission1.setEnable(true);
|
|
||||||
permission1.setId(PermissionConstants.SYSTEM_USER_READ);
|
|
||||||
add(permission1);
|
|
||||||
PermissionSettingUpdateRequest.PermissionUpdateRequest permission2
|
|
||||||
= new PermissionSettingUpdateRequest.PermissionUpdateRequest();
|
|
||||||
permission2.setEnable(false);
|
|
||||||
permission2.setId(PermissionConstants.SYSTEM_USER_ROLE_READ);
|
|
||||||
add(permission2);
|
|
||||||
}});
|
|
||||||
|
|
||||||
// @@请求成功
|
|
||||||
request.setUserRoleId(addUserRole.getId());
|
|
||||||
this.requestPostWithOk(PERMISSION_UPDATE, request);
|
|
||||||
// 获取该用户组拥有的权限
|
|
||||||
Set<String> permissionIds = baseUserRolePermissionService.getPermissionIdSetByRoleId(request.getUserRoleId());
|
|
||||||
Set<String> requestPermissionIds = request.getPermissions().stream()
|
|
||||||
.filter(PermissionSettingUpdateRequest.PermissionUpdateRequest::getEnable)
|
|
||||||
.map(PermissionSettingUpdateRequest.PermissionUpdateRequest::getId)
|
|
||||||
.collect(Collectors.toSet());
|
|
||||||
// 校验请求成功数据
|
|
||||||
Assertions.assertEquals(requestPermissionIds, permissionIds);
|
|
||||||
|
|
||||||
// @@校验日志
|
|
||||||
checkLog(request.getUserRoleId(), OperationLogType.UPDATE);
|
|
||||||
|
|
||||||
// @@操作非全局用户组异常
|
|
||||||
request.setUserRoleId(getNonGlobalUserRole().getId());
|
|
||||||
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), GLOBAL_USER_ROLE_PERMISSION);
|
|
||||||
|
|
||||||
// @@操作内置用户组异常
|
|
||||||
request.setUserRoleId(ADMIN.getValue());
|
|
||||||
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), INTERNAL_USER_ROLE_PERMISSION);
|
|
||||||
|
|
||||||
// @@异常参数校验
|
|
||||||
paramValidateTest(PermissionSettingUpdateRequestDefinition.class, PERMISSION_UPDATE);
|
|
||||||
|
|
||||||
// @@校验权限
|
|
||||||
requestPostPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_UPDATE, PERMISSION_UPDATE, request);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
@Order(3)
|
|
||||||
void delete() throws Exception {
|
void delete() throws Exception {
|
||||||
// 校验删除该用户组,没有用户组的用户会默认添加系统成员用户组
|
// 校验删除该用户组,没有用户组的用户会默认添加系统成员用户组
|
||||||
UserRoleRelation userRoleRelation = prepareOneLimitTest(addUserRole.getId());
|
UserRoleRelation userRoleRelation = prepareOneLimitTest(addUserRole.getId());
|
||||||
|
Loading…
Reference in New Issue
Block a user