refactor(系统设置): 部分接口添加资源存在校验

This commit is contained in:
AgAngle 2023-08-29 15:42:47 +08:00 committed by jianxing
parent fd96bde2e2
commit ddf4611586
16 changed files with 170 additions and 12 deletions

View File

@ -3,9 +3,11 @@ package io.metersphere.sdk.controller.handler;
import io.metersphere.sdk.controller.handler.result.IResultCode; import io.metersphere.sdk.controller.handler.result.IResultCode;
import io.metersphere.sdk.controller.handler.result.MsHttpResultCode; import io.metersphere.sdk.controller.handler.result.MsHttpResultCode;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.util.ServiceUtils;
import io.metersphere.sdk.util.Translator; import io.metersphere.sdk.util.Translator;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.ShiroException; import org.apache.shiro.ShiroException;
import org.apache.shiro.authz.UnauthorizedException; import org.apache.shiro.authz.UnauthorizedException;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
@ -74,17 +76,40 @@ public class RestControllerExceptionHandler {
.body(ResultHolder.error(MsHttpResultCode.FAILED.getCode(), e.getMessage())); .body(ResultHolder.error(MsHttpResultCode.FAILED.getCode(), e.getMessage()));
} }
int code = errorCode.getCode();
String message = errorCode.getMessage();
message = Translator.get(message, message);
if (errorCode instanceof MsHttpResultCode) { if (errorCode instanceof MsHttpResultCode) {
// 如果是 MsHttpResultCode则设置响应的状态码取状态码的后三位 // 如果是 MsHttpResultCode则设置响应的状态码取状态码的后三位
return ResponseEntity.status(errorCode.getCode() % 1000) if (errorCode.equals(MsHttpResultCode.NOT_FOUND)) {
.body(ResultHolder.error(errorCode.getCode(), Translator.get(errorCode.getMessage(), errorCode.getMessage()))); message = getNotFoundMessage(message);
}
return ResponseEntity.status(code % 1000)
.body(ResultHolder.error(code, message));
} else { } else {
// 响应码返回 500设置业务状态码 // 响应码返回 500设置业务状态码
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(ResultHolder.error(errorCode.getCode(), Translator.get(errorCode.getMessage(), errorCode.getMessage()), e.getMessage())); .body(ResultHolder.error(code, Translator.get(message, message), e.getMessage()));
} }
} }
/**
* 当抛出 NOT_FOUND拼接资源名称
* @param message
* @return
*/
private static String getNotFoundMessage(String message) {
String resourceName = ServiceUtils.getResourceName();
if (StringUtils.isNotBlank(resourceName)) {
message = String.format(message, Translator.get(resourceName, resourceName));
} else {
message = String.format(message, Translator.get("resource.name"));
}
ServiceUtils.clearResourceName();
return message;
}
@ExceptionHandler({Exception.class}) @ExceptionHandler({Exception.class})
public ResponseEntity<ResultHolder> handlerException(Exception e) { public ResponseEntity<ResultHolder> handlerException(Exception e) {
return ResponseEntity.internalServerError() return ResponseEntity.internalServerError()

View File

@ -11,7 +11,8 @@ public enum MsHttpResultCode implements IResultCode {
FAILED(100500, "http_result_unknown_exception"), FAILED(100500, "http_result_unknown_exception"),
VALIDATE_FAILED(100400, "http_result_validate"), VALIDATE_FAILED(100400, "http_result_validate"),
UNAUTHORIZED(100401, "http_result_unauthorized"), UNAUTHORIZED(100401, "http_result_unauthorized"),
FORBIDDEN(100403, "http_result_forbidden"); FORBIDDEN(100403, "http_result_forbidden"),
NOT_FOUND(100404, "http_result_not_found");
private int code; private int code;
private String message; private String message;

View File

@ -64,7 +64,7 @@ public class BaseUserRoleRelationService {
public UserRole getUserRole(String id) { public UserRole getUserRole(String id) {
UserRoleRelation userRoleRelation = userRoleRelationMapper.selectByPrimaryKey(id); UserRoleRelation userRoleRelation = userRoleRelationMapper.selectByPrimaryKey(id);
return userRoleMapper.selectByPrimaryKey(userRoleRelation.getRoleId()); return userRoleRelation == null ? null : userRoleMapper.selectByPrimaryKey(userRoleRelation.getRoleId());
} }
protected void delete(String id) { protected void delete(String id) {

View File

@ -6,6 +6,7 @@ import io.metersphere.sdk.dto.request.PermissionSettingUpdateRequest;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.util.JSON; import io.metersphere.sdk.util.JSON;
import io.metersphere.sdk.util.PermissionCache; import io.metersphere.sdk.util.PermissionCache;
import io.metersphere.sdk.util.ServiceUtils;
import io.metersphere.sdk.util.Translator; import io.metersphere.sdk.util.Translator;
import io.metersphere.system.domain.UserRole; import io.metersphere.system.domain.UserRole;
import io.metersphere.system.domain.UserRoleExample; import io.metersphere.system.domain.UserRoleExample;
@ -140,6 +141,10 @@ public class BaseUserRoleService {
return userRole; return userRole;
} }
public UserRole checkResourceExist(UserRole userRole) {
return ServiceUtils.checkResourceExist(userRole, "permission.system_user_role.name");
}
/** /**
* 删除用户组并且删除用户组与用户的关联关系用户组与权限的关联关系 * 删除用户组并且删除用户组与用户的关联关系用户组与权限的关联关系
* *
@ -175,6 +180,10 @@ public class BaseUserRoleService {
return userRoleMapper.selectByPrimaryKey(id); return userRoleMapper.selectByPrimaryKey(id);
} }
public UserRole getWithCheck(String id) {
return checkResourceExist(userRoleMapper.selectByPrimaryKey(id));
}
public List<UserRole> getList(List<String> idList) { public List<UserRole> getList(List<String> idList) {
if (CollectionUtils.isEmpty(idList)) { if (CollectionUtils.isEmpty(idList)) {
return new ArrayList<>(); return new ArrayList<>();

View File

@ -0,0 +1,36 @@
package io.metersphere.sdk.util;
import io.metersphere.sdk.exception.MSException;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
public class ServiceUtils {
/**
* 保存资源名称在处理 NOT_FOUND 异常时拼接资源名称
*/
private static final ThreadLocal<String> resourceName = new ThreadLocal<>();
/**
* 校验资源是否存在不存在则抛出 NOT_FOUND 异常
* @param resource 资源
* @param name 资源名称用户拼接异常信息
* @return
* @param <T>
*/
public static <T> T checkResourceExist(T resource, String name) {
if (resource == null) {
resourceName.set(name);
throw new MSException(NOT_FOUND);
}
return resource;
}
public static String getResourceName() {
return resourceName.get();
}
public static void clearResourceName() {
resourceName.remove();
}
}

View File

@ -37,6 +37,8 @@ not_authorized=not authorized.
login_fail=Login fail login_fail=Login fail
user_apikey_limit=Can have up to 5 api keys user_apikey_limit=Can have up to 5 api keys
please_logout_current_user=Please logout current user first please_logout_current_user=Please logout current user first
resource.name=Resource
#load test #load test
edit_load_test_not_found=Cannot edit test, test not found= edit_load_test_not_found=Cannot edit test, test not found=
run_load_test_not_found=Cannot run test, test not found= run_load_test_not_found=Cannot run test, test not found=
@ -420,6 +422,7 @@ add=Add
delete=Delete delete=Delete
update=Update update=Update
project_is_not_exist=Project is not exist project_is_not_exist=Project is not exist
#permission #permission
permission.system.name=System permission.system.name=System
permission.org.name=Organization permission.org.name=Organization

View File

@ -37,6 +37,8 @@ user_expires=用户过期
not_authorized=未经授权 not_authorized=未经授权
user_apikey_limit=最多能有5个Api key user_apikey_limit=最多能有5个Api key
please_logout_current_user=请先登出当前用户 please_logout_current_user=请先登出当前用户
resource.name=资源
#load test #load test
edit_load_test_not_found=无法编辑测试,未找到测试: edit_load_test_not_found=无法编辑测试,未找到测试:
run_load_test_not_found=无法运行测试,未找到测试: run_load_test_not_found=无法运行测试,未找到测试:
@ -407,6 +409,7 @@ http_result_unknown_exception=系统未知异常
http_result_validate=参数校验失败 http_result_validate=参数校验失败
http_result_unauthorized=用户认证失败 http_result_unauthorized=用户认证失败
http_result_forbidden=权限认证失败 http_result_forbidden=权限认证失败
http_result_not_found=%s不存在
enum_value_valid_message=枚举值不合法,必须为 enum_value_valid_message=枚举值不合法,必须为

View File

@ -63,6 +63,7 @@ load_test_report_file_not_exist=當前報告沒有JTL文件請等待或重新
startTime_must_be_less_than_endTime=開始日期必須小於結束日期 startTime_must_be_less_than_endTime=開始日期必須小於結束日期
start_time_is_null=開始日期不能為空 start_time_is_null=開始日期不能為空
end_time_is_null=結束日期不能為空 end_time_is_null=結束日期不能為空
resource.name=資源
#organization #organization
organization_not_exists=組織不存在 organization_not_exists=組織不存在

View File

@ -1,11 +1,13 @@
package io.metersphere.system.service; package io.metersphere.system.service;
import io.metersphere.sdk.constants.UserRoleScope; import io.metersphere.sdk.constants.UserRoleScope;
import io.metersphere.sdk.dto.ExcludeOptionDTO;
import io.metersphere.sdk.dto.TableBatchProcessResponse; import io.metersphere.sdk.dto.TableBatchProcessResponse;
import io.metersphere.sdk.dto.UserRoleRelationUserDTO; import io.metersphere.sdk.dto.UserRoleRelationUserDTO;
import io.metersphere.sdk.dto.request.GlobalUserRoleRelationUpdateRequest; import io.metersphere.sdk.dto.request.GlobalUserRoleRelationUpdateRequest;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.service.BaseUserRoleRelationService; import io.metersphere.sdk.service.BaseUserRoleRelationService;
import io.metersphere.sdk.service.BaseUserRoleService;
import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.BeanUtils;
import io.metersphere.sdk.util.Translator; import io.metersphere.sdk.util.Translator;
import io.metersphere.system.domain.UserRole; import io.metersphere.system.domain.UserRole;
@ -40,6 +42,8 @@ public class GlobalUserRoleRelationService extends BaseUserRoleRelationService {
private UserService userService; private UserService userService;
@Resource @Resource
private UserToolService userToolService; private UserToolService userToolService;
@Resource
private BaseUserRoleService baseUserRoleService;
public List<UserRoleRelationUserDTO> list(GlobalUserRoleRelationQueryRequest request) { public List<UserRoleRelationUserDTO> list(GlobalUserRoleRelationQueryRequest request) {
List<UserRoleRelationUserDTO> userRoleRelationUserDTOS = extUserRoleRelationMapper.listGlobal(request); List<UserRoleRelationUserDTO> userRoleRelationUserDTOS = extUserRoleRelationMapper.listGlobal(request);
@ -127,6 +131,7 @@ public class GlobalUserRoleRelationService extends BaseUserRoleRelationService {
@Override @Override
public void delete(String id) { public void delete(String id) {
UserRole userRole = getUserRole(id); UserRole userRole = getUserRole(id);
baseUserRoleService.checkResourceExist(userRole);
UserRoleRelation userRoleRelation = userRoleRelationMapper.selectByPrimaryKey(id); UserRoleRelation userRoleRelation = userRoleRelationMapper.selectByPrimaryKey(id);
globalUserRoleService.checkSystemUserGroup(userRole); globalUserRoleService.checkSystemUserGroup(userRole);
globalUserRoleService.checkGlobalUserRole(userRole); globalUserRoleService.checkGlobalUserRole(userRole);
@ -139,4 +144,9 @@ public class GlobalUserRoleRelationService extends BaseUserRoleRelationService {
throw new MSException(GLOBAL_USER_ROLE_LIMIT); throw new MSException(GLOBAL_USER_ROLE_LIMIT);
} }
} }
public List<ExcludeOptionDTO> getExcludeSelectOption(String roleId) {
baseUserRoleService.getWithCheck(roleId);
return super.getExcludeSelectOption(roleId);
}
} }

View File

@ -6,6 +6,7 @@ import io.metersphere.sdk.dto.PermissionDefinitionItem;
import io.metersphere.sdk.dto.request.PermissionSettingUpdateRequest; import io.metersphere.sdk.dto.request.PermissionSettingUpdateRequest;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.service.BaseUserRoleService; import io.metersphere.sdk.service.BaseUserRoleService;
import io.metersphere.sdk.util.ServiceUtils;
import io.metersphere.sdk.util.Translator; import io.metersphere.sdk.util.Translator;
import io.metersphere.system.domain.UserRole; import io.metersphere.system.domain.UserRole;
import io.metersphere.system.domain.UserRoleExample; import io.metersphere.system.domain.UserRoleExample;
@ -102,7 +103,7 @@ public class GlobalUserRoleService extends BaseUserRoleService {
@Override @Override
public UserRole update(UserRole userRole) { public UserRole update(UserRole userRole) {
UserRole originUserRole = get(userRole.getId()); UserRole originUserRole = getWithCheck(userRole.getId());
checkGlobalUserRole(originUserRole); checkGlobalUserRole(originUserRole);
checkInternalUserRole(originUserRole); checkInternalUserRole(originUserRole);
userRole.setInternal(false); userRole.setInternal(false);
@ -111,7 +112,7 @@ public class GlobalUserRoleService extends BaseUserRoleService {
} }
public void delete(String id, String currentUserId) { public void delete(String id, String currentUserId) {
UserRole userRole = get(id); UserRole userRole = getWithCheck(id);
checkGlobalUserRole(userRole); checkGlobalUserRole(userRole);
super.delete(userRole, MEMBER.getValue(), currentUserId); super.delete(userRole, MEMBER.getValue(), currentUserId);
} }
@ -141,14 +142,14 @@ public class GlobalUserRoleService extends BaseUserRoleService {
public List<PermissionDefinitionItem> getPermissionSetting(String id) { public List<PermissionDefinitionItem> getPermissionSetting(String id) {
UserRole userRole = get(id); UserRole userRole = getWithCheck(id);
checkGlobalUserRole(userRole); checkGlobalUserRole(userRole);
return getPermissionSetting(userRole); return getPermissionSetting(userRole);
} }
@Override @Override
public void updatePermissionSetting(PermissionSettingUpdateRequest request) { public void updatePermissionSetting(PermissionSettingUpdateRequest request) {
UserRole userRole = get(request.getUserRoleId()); UserRole userRole = getWithCheck(request.getUserRoleId());
checkGlobalUserRole(userRole); checkGlobalUserRole(userRole);
checkInternalUserRole(userRole); checkInternalUserRole(userRole);
super.updatePermissionSetting(request); super.updatePermissionSetting(request);

View File

@ -12,6 +12,7 @@ import io.metersphere.sdk.service.BaseUserService;
import io.metersphere.sdk.service.JdbcDriverPluginService; import io.metersphere.sdk.service.JdbcDriverPluginService;
import io.metersphere.sdk.service.PluginLoadService; import io.metersphere.sdk.service.PluginLoadService;
import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.BeanUtils;
import io.metersphere.sdk.util.ServiceUtils;
import io.metersphere.system.domain.Plugin; import io.metersphere.system.domain.Plugin;
import io.metersphere.system.domain.PluginExample; import io.metersphere.system.domain.PluginExample;
import io.metersphere.system.dto.PluginDTO; import io.metersphere.system.dto.PluginDTO;
@ -34,6 +35,7 @@ import java.io.OutputStream;
import java.sql.Driver; import java.sql.Driver;
import java.util.*; import java.util.*;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
import static io.metersphere.system.controller.result.SystemResultCode.PLUGIN_EXIST; import static io.metersphere.system.controller.result.SystemResultCode.PLUGIN_EXIST;
import static io.metersphere.system.controller.result.SystemResultCode.PLUGIN_TYPE_EXIST; import static io.metersphere.system.controller.result.SystemResultCode.PLUGIN_TYPE_EXIST;
@ -157,6 +159,10 @@ public class PluginService {
} }
} }
public Plugin checkResourceExist(String id) {
return ServiceUtils.checkResourceExist(pluginMapper.selectByPrimaryKey(id), "permission.system_plugin.name");
}
private void checkPluginAddExist(Plugin plugin) { private void checkPluginAddExist(Plugin plugin) {
PluginExample example = new PluginExample(); PluginExample example = new PluginExample();
example.createCriteria() example.createCriteria()
@ -192,6 +198,7 @@ public class PluginService {
} }
public Plugin update(PluginUpdateRequest request) { public Plugin update(PluginUpdateRequest request) {
checkResourceExist(request.getId());
request.setCreateUser(null); request.setCreateUser(null);
Plugin plugin = new Plugin(); Plugin plugin = new Plugin();
BeanUtils.copyBean(plugin, request); BeanUtils.copyBean(plugin, request);
@ -222,6 +229,7 @@ public class PluginService {
} }
public void delete(String id) { public void delete(String id) {
checkResourceExist(id);
pluginMapper.deleteByPrimaryKey(id); pluginMapper.deleteByPrimaryKey(id);
// 删除插件脚本 // 删除插件脚本
pluginScriptService.deleteByPluginId(id); pluginScriptService.deleteByPluginId(id);

View File

@ -7,6 +7,7 @@ import io.metersphere.sdk.service.PlatformPluginService;
import io.metersphere.sdk.service.PluginLoadService; import io.metersphere.sdk.service.PluginLoadService;
import io.metersphere.sdk.util.BeanUtils; import io.metersphere.sdk.util.BeanUtils;
import io.metersphere.sdk.util.JSON; import io.metersphere.sdk.util.JSON;
import io.metersphere.sdk.util.ServiceUtils;
import io.metersphere.system.domain.Plugin; import io.metersphere.system.domain.Plugin;
import io.metersphere.system.domain.ServiceIntegration; import io.metersphere.system.domain.ServiceIntegration;
import io.metersphere.system.domain.ServiceIntegrationExample; import io.metersphere.system.domain.ServiceIntegrationExample;
@ -39,6 +40,8 @@ public class ServiceIntegrationService {
private PluginLoadService pluginLoadService; private PluginLoadService pluginLoadService;
@Resource @Resource
private PlatformPluginService platformPluginService; private PlatformPluginService platformPluginService;
@Resource
private PluginService pluginService;
public static final String PLUGIN_IMAGE_GET_PATH = "/plugin/image/%s?imagePath=%s"; public static final String PLUGIN_IMAGE_GET_PATH = "/plugin/image/%s?imagePath=%s";
@ -88,6 +91,7 @@ public class ServiceIntegrationService {
} }
public ServiceIntegration update(ServiceIntegrationUpdateRequest request) { public ServiceIntegration update(ServiceIntegrationUpdateRequest request) {
checkResourceExist(request.getId());
ServiceIntegration serviceIntegration = new ServiceIntegration(); ServiceIntegration serviceIntegration = new ServiceIntegration();
// 组织不能修改 // 组织不能修改
serviceIntegration.setOrganizationId(null); serviceIntegration.setOrganizationId(null);
@ -99,7 +103,12 @@ public class ServiceIntegrationService {
return serviceIntegration; return serviceIntegration;
} }
private ServiceIntegration checkResourceExist(String id) {
return ServiceUtils.checkResourceExist(serviceIntegrationMapper.selectByPrimaryKey(id), "permission.service_integration.name");
}
public void delete(String id) { public void delete(String id) {
checkResourceExist(id);
serviceIntegrationMapper.deleteByPrimaryKey(id); serviceIntegrationMapper.deleteByPrimaryKey(id);
} }
@ -114,12 +123,13 @@ public class ServiceIntegrationService {
} }
public void validate(String pluginId, Map<String, String> serviceIntegrationInfo) { public void validate(String pluginId, Map<String, String> serviceIntegrationInfo) {
pluginService.checkResourceExist(pluginId);
Platform platform = platformPluginService.getPlatform(pluginId, StringUtils.EMPTY, JSON.toJSONString(serviceIntegrationInfo)); Platform platform = platformPluginService.getPlatform(pluginId, StringUtils.EMPTY, JSON.toJSONString(serviceIntegrationInfo));
platform.validateIntegrationConfig(); platform.validateIntegrationConfig();
} }
public void validate(String id) { public void validate(String id) {
ServiceIntegration serviceIntegration = serviceIntegrationMapper.selectByPrimaryKey(id); ServiceIntegration serviceIntegration = checkResourceExist(id);;
Platform platform = platformPluginService.getPlatform(serviceIntegration.getPluginId(), StringUtils.EMPTY); Platform platform = platformPluginService.getPlatform(serviceIntegration.getPluginId(), StringUtils.EMPTY);
platform.validateIntegrationConfig(); platform.validateIntegrationConfig();
} }
@ -129,6 +139,7 @@ public class ServiceIntegrationService {
} }
public Object getPluginScript(String pluginId) { public Object getPluginScript(String pluginId) {
pluginService.checkResourceExist(pluginId);
AbstractPlatformPlugin platformPlugin = pluginLoadService.getImplInstance(pluginId, AbstractPlatformPlugin.class); AbstractPlatformPlugin platformPlugin = pluginLoadService.getImplInstance(pluginId, AbstractPlatformPlugin.class);
return pluginLoadService.getPluginScriptContent(pluginId, platformPlugin.getIntegrationScriptId()); return pluginLoadService.getPluginScriptContent(pluginId, platformPlugin.getIntegrationScriptId());
} }

View File

@ -34,6 +34,7 @@ import java.util.stream.Collectors;
import static io.metersphere.sdk.constants.InternalUserRole.ADMIN; import static io.metersphere.sdk.constants.InternalUserRole.ADMIN;
import static io.metersphere.sdk.constants.InternalUserRole.MEMBER; import static io.metersphere.sdk.constants.InternalUserRole.MEMBER;
import static io.metersphere.sdk.controller.handler.result.CommonResultCode.INTERNAL_USER_ROLE_PERMISSION; import static io.metersphere.sdk.controller.handler.result.CommonResultCode.INTERNAL_USER_ROLE_PERMISSION;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
import static io.metersphere.system.controller.result.SystemResultCode.GLOBAL_USER_ROLE_EXIST; import static io.metersphere.system.controller.result.SystemResultCode.GLOBAL_USER_ROLE_EXIST;
import static io.metersphere.system.controller.result.SystemResultCode.GLOBAL_USER_ROLE_PERMISSION; import static io.metersphere.system.controller.result.SystemResultCode.GLOBAL_USER_ROLE_PERMISSION;
@ -132,6 +133,11 @@ class GlobalUserRoleControllerTests extends BaseTest {
request.setName("系统管理员"); request.setName("系统管理员");
assertErrorCode(this.requestPost(DEFAULT_UPDATE, request), GLOBAL_USER_ROLE_EXIST); assertErrorCode(this.requestPost(DEFAULT_UPDATE, request), GLOBAL_USER_ROLE_EXIST);
// @@校验 NOT_FOUND 异常
request.setId("1111");
request.setName("系统管理员1");
assertErrorCode(this.requestPost(DEFAULT_UPDATE, request), NOT_FOUND);
// @@异常参数校验 // @@异常参数校验
updatedGroupParamValidateTest(UserRoleUpdateRequestDefinition.class, DEFAULT_UPDATE); updatedGroupParamValidateTest(UserRoleUpdateRequestDefinition.class, DEFAULT_UPDATE);
@ -223,6 +229,10 @@ class GlobalUserRoleControllerTests extends BaseTest {
request.setUserRoleId(ADMIN.getValue()); request.setUserRoleId(ADMIN.getValue());
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), INTERNAL_USER_ROLE_PERMISSION); assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), INTERNAL_USER_ROLE_PERMISSION);
// @@校验 NOT_FOUND 异常
request.setUserRoleId("1111");
assertErrorCode(this.requestPost(PERMISSION_UPDATE, request), NOT_FOUND);
// @@异常参数校验 // @@异常参数校验
paramValidateTest(PermissionSettingUpdateRequestDefinition.class, PERMISSION_UPDATE); paramValidateTest(PermissionSettingUpdateRequestDefinition.class, PERMISSION_UPDATE);
@ -276,6 +286,9 @@ class GlobalUserRoleControllerTests extends BaseTest {
// @@操作非全局用户组异常 // @@操作非全局用户组异常
assertErrorCode(this.requestGet(PERMISSION_SETTING, getNonGlobalUserRole().getId()), GLOBAL_USER_ROLE_PERMISSION); assertErrorCode(this.requestGet(PERMISSION_SETTING, getNonGlobalUserRole().getId()), GLOBAL_USER_ROLE_PERMISSION);
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(PERMISSION_SETTING, "111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_READ, PERMISSION_SETTING, ADMIN.getValue()); requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_READ, PERMISSION_SETTING, ADMIN.getValue());
} }
@ -314,6 +327,9 @@ class GlobalUserRoleControllerTests extends BaseTest {
// @@操作内置用户组异常 // @@操作内置用户组异常
assertErrorCode(this.requestGet(DEFAULT_DELETE, ADMIN.getValue()), INTERNAL_USER_ROLE_PERMISSION); assertErrorCode(this.requestGet(DEFAULT_DELETE, ADMIN.getValue()), INTERNAL_USER_ROLE_PERMISSION);
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(DEFAULT_DELETE, "111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_DELETE, DEFAULT_DELETE, addUserRole.getId()); requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_DELETE, DEFAULT_DELETE, addUserRole.getId());
} }

View File

@ -37,6 +37,7 @@ import static io.metersphere.sdk.constants.InternalUserRole.ADMIN;
import static io.metersphere.sdk.constants.InternalUserRole.ORG_ADMIN; import static io.metersphere.sdk.constants.InternalUserRole.ORG_ADMIN;
import static io.metersphere.sdk.controller.handler.result.CommonResultCode.USER_ROLE_RELATION_EXIST; import static io.metersphere.sdk.controller.handler.result.CommonResultCode.USER_ROLE_RELATION_EXIST;
import static io.metersphere.sdk.controller.handler.result.CommonResultCode.USER_ROLE_RELATION_REMOVE_ADMIN_USER_PERMISSION; import static io.metersphere.sdk.controller.handler.result.CommonResultCode.USER_ROLE_RELATION_REMOVE_ADMIN_USER_PERMISSION;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
import static io.metersphere.system.controller.result.SystemResultCode.*; import static io.metersphere.system.controller.result.SystemResultCode.*;
@SpringBootTest @SpringBootTest
@ -171,6 +172,9 @@ class GlobalUserRoleRelationControllerTests extends BaseTest {
// 校验 exclude 字段 // 校验 exclude 字段
Assertions.assertTrue(item.getExclude() == excludeUserIds.contains(item.getId())); Assertions.assertTrue(item.getExclude() == excludeUserIds.contains(item.getId()));
}); });
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(USER_OPTION, "111"), NOT_FOUND);
} }
@Test @Test
@ -200,6 +204,9 @@ class GlobalUserRoleRelationControllerTests extends BaseTest {
assertErrorCode(this.requestGet(DEFAULT_DELETE, userRoleRelations.get(0).getId()), assertErrorCode(this.requestGet(DEFAULT_DELETE, userRoleRelations.get(0).getId()),
USER_ROLE_RELATION_REMOVE_ADMIN_USER_PERMISSION); USER_ROLE_RELATION_REMOVE_ADMIN_USER_PERMISSION);
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(DEFAULT_DELETE, "111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_UPDATE, DEFAULT_DELETE, addUserRoleRelation.getId()); requestGetPermissionTest(PermissionConstants.SYSTEM_USER_ROLE_UPDATE, DEFAULT_DELETE, addUserRoleRelation.getId());
} }

View File

@ -30,6 +30,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static io.metersphere.sdk.controller.handler.result.CommonResultCode.FILE_NAME_ILLEGAL; import static io.metersphere.sdk.controller.handler.result.CommonResultCode.FILE_NAME_ILLEGAL;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
import static io.metersphere.system.controller.result.SystemResultCode.*; import static io.metersphere.system.controller.result.SystemResultCode.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ -236,6 +237,11 @@ public class PluginControllerTests extends BaseTest {
// @@校验日志 // @@校验日志
checkLog(request.getId(), OperationLogType.UPDATE); checkLog(request.getId(), OperationLogType.UPDATE);
// @@校验 NOT_FOUND 异常
request.setId("1111");
assertErrorCode(this.requestPost(DEFAULT_UPDATE, request), NOT_FOUND);
// @@异常参数校验 // @@异常参数校验
updatedGroupParamValidateTest(PluginUpdateRequestDefinition.class, DEFAULT_UPDATE); updatedGroupParamValidateTest(PluginUpdateRequestDefinition.class, DEFAULT_UPDATE);
// @@校验权限 // @@校验权限
@ -308,6 +314,9 @@ public class PluginControllerTests extends BaseTest {
Assertions.assertEquals(new ArrayList<>(0), getScriptIdsByPlugId(addPlugin.getId())); Assertions.assertEquals(new ArrayList<>(0), getScriptIdsByPlugId(addPlugin.getId()));
this.requestGetWithOk(DEFAULT_DELETE, anotherAddPlugin.getId()); this.requestGetWithOk(DEFAULT_DELETE, anotherAddPlugin.getId());
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(DEFAULT_DELETE, "1111"), NOT_FOUND);
// @@校验日志 // @@校验日志
checkLog(addPlugin.getId(), OperationLogType.DELETE); checkLog(addPlugin.getId(), OperationLogType.DELETE);
// @@校验权限 // @@校验权限

View File

@ -35,6 +35,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import static io.metersphere.sdk.constants.InternalUserRole.ADMIN; import static io.metersphere.sdk.constants.InternalUserRole.ADMIN;
import static io.metersphere.sdk.controller.handler.result.MsHttpResultCode.NOT_FOUND;
import static io.metersphere.system.controller.result.SystemResultCode.SERVICE_INTEGRATION_EXIST; import static io.metersphere.system.controller.result.SystemResultCode.SERVICE_INTEGRATION_EXIST;
import static io.metersphere.system.service.ServiceIntegrationService.PLUGIN_IMAGE_GET_PATH; import static io.metersphere.system.service.ServiceIntegrationService.PLUGIN_IMAGE_GET_PATH;
import static org.mockserver.model.HttpRequest.request; import static org.mockserver.model.HttpRequest.request;
@ -150,6 +151,11 @@ public class ServiceIntegrationControllerTests extends BaseTest {
// @@校验日志 // @@校验日志
checkLog(request.getId(), OperationLogType.UPDATE); checkLog(request.getId(), OperationLogType.UPDATE);
// @@校验 NOT_FOUND 异常
request.setId("1111");
assertErrorCode(this.requestPost(DEFAULT_UPDATE, request), NOT_FOUND);
// @@异常参数校验 // @@异常参数校验
updatedGroupParamValidateTest(ServiceIntegrationUpdateRequestDefinition.class, DEFAULT_UPDATE); updatedGroupParamValidateTest(ServiceIntegrationUpdateRequestDefinition.class, DEFAULT_UPDATE);
// @@校验权限 // @@校验权限
@ -200,6 +206,10 @@ public class ServiceIntegrationControllerTests extends BaseTest {
// @@请求成功 // @@请求成功
this.requestGetWithOk(VALIDATE_GET, addServiceIntegration.getId()); this.requestGetWithOk(VALIDATE_GET, addServiceIntegration.getId());
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(VALIDATE_GET, "1111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_UPDATE, VALIDATE_GET, addServiceIntegration.getId()); requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_UPDATE, VALIDATE_GET, addServiceIntegration.getId());
} }
@ -212,6 +222,8 @@ public class ServiceIntegrationControllerTests extends BaseTest {
Map<String, Object> integrationConfigMap = JSON.parseMap(JSON.toJSONString(integrationConfig)); Map<String, Object> integrationConfigMap = JSON.parseMap(JSON.toJSONString(integrationConfig));
// @@请求成功 // @@请求成功
this.requestPostWithOk(VALIDATE_POST, integrationConfigMap, plugin.getId()); this.requestPostWithOk(VALIDATE_POST, integrationConfigMap, plugin.getId());
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestPost(VALIDATE_POST, integrationConfigMap, "1111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestPostPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_UPDATE, VALIDATE_POST, integrationConfigMap, plugin.getId()); requestPostPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_UPDATE, VALIDATE_POST, integrationConfigMap, plugin.getId());
} }
@ -223,6 +235,8 @@ public class ServiceIntegrationControllerTests extends BaseTest {
MvcResult mvcResult = this.requestGetWithOkAndReturn(SCRIPT_GET, plugin.getId()); MvcResult mvcResult = this.requestGetWithOkAndReturn(SCRIPT_GET, plugin.getId());
// 校验请求成功数据 // 校验请求成功数据
Assertions.assertTrue(StringUtils.isNotBlank(mvcResult.getResponse().getContentAsString())); Assertions.assertTrue(StringUtils.isNotBlank(mvcResult.getResponse().getContentAsString()));
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(SCRIPT_GET, "1111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_READ, SCRIPT_GET, plugin.getId()); requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_READ, SCRIPT_GET, plugin.getId());
} }
@ -240,6 +254,10 @@ public class ServiceIntegrationControllerTests extends BaseTest {
// @@校验日志 // @@校验日志
checkLog(addServiceIntegration.getId(), OperationLogType.DELETE); checkLog(addServiceIntegration.getId(), OperationLogType.DELETE);
// @@校验 NOT_FOUND 异常
assertErrorCode(this.requestGet(DEFAULT_DELETE, "1111"), NOT_FOUND);
// @@校验权限 // @@校验权限
requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_DELETE, DEFAULT_DELETE, addServiceIntegration.getId()); requestGetPermissionTest(PermissionConstants.SYSTEM_SERVICE_INTEGRATION_DELETE, DEFAULT_DELETE, addServiceIntegration.getId());
} }
@ -270,8 +288,8 @@ public class ServiceIntegrationControllerTests extends BaseTest {
* 删除插件 * 删除插件
* @throws Exception * @throws Exception
*/ */
public void deletePlugin() throws Exception { public void deletePlugin() {
this.requestGetWithOk(DEFAULT_DELETE, plugin.getId()); pluginService.delete(plugin.getId());
} }
@Getter @Getter