refactor(接口测试): 优化接口详情参数
This commit is contained in:
parent
ae6fb6184a
commit
de192523ea
|
@ -2,6 +2,7 @@ package io.metersphere.api.dto.debug;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -44,8 +45,8 @@ public class ApiDebugAddRequest implements Serializable {
|
||||||
private String moduleId;
|
private String moduleId;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
@NotBlank
|
@NotNull
|
||||||
private String request;
|
private Object request;
|
||||||
/**
|
/**
|
||||||
* 新上传的文件ID
|
* 新上传的文件ID
|
||||||
* 创建时先按ID创建目录,再把文件放入目录
|
* 创建时先按ID创建目录,再把文件放入目录
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class ApiDebugUpdateRequest implements Serializable {
|
||||||
private String moduleId;
|
private String moduleId;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
private String request;
|
private Object request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新上传的文件ID
|
* 新上传的文件ID
|
||||||
|
|
|
@ -3,6 +3,7 @@ package io.metersphere.api.dto.definition;
|
||||||
import io.metersphere.sdk.constants.ModuleConstants;
|
import io.metersphere.sdk.constants.ModuleConstants;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -65,12 +66,12 @@ public class ApiDefinitionAddRequest implements Serializable {
|
||||||
private LinkedHashSet<@NotBlank String> tags;
|
private LinkedHashSet<@NotBlank String> tags;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
@NotBlank
|
@NotNull
|
||||||
private String request;
|
private Object request;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
@NotBlank
|
@NotNull
|
||||||
private String response;
|
private Object response;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新上传的文件ID
|
* 新上传的文件ID
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.metersphere.api.dto.definition;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -50,8 +51,8 @@ public class ApiTestCaseAddRequest implements Serializable {
|
||||||
private String environmentId;
|
private String environmentId;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
@NotBlank
|
@NotNull
|
||||||
private String request;
|
private Object request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新上传的文件ID
|
* 新上传的文件ID
|
||||||
|
|
|
@ -2,6 +2,7 @@ package io.metersphere.api.dto.definition;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
@ -44,8 +45,8 @@ public class ApiTestCaseUpdateRequest implements Serializable {
|
||||||
private String environmentId;
|
private String environmentId;
|
||||||
|
|
||||||
@Schema(description = "请求内容")
|
@Schema(description = "请求内容")
|
||||||
@NotBlank
|
@NotNull
|
||||||
private String request;
|
private Object request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新上传的文件ID
|
* 新上传的文件ID
|
||||||
|
|
|
@ -83,7 +83,7 @@ public class ApiDebugService {
|
||||||
apiDebugMapper.insert(apiDebug);
|
apiDebugMapper.insert(apiDebug);
|
||||||
ApiDebugBlob apiDebugBlob = new ApiDebugBlob();
|
ApiDebugBlob apiDebugBlob = new ApiDebugBlob();
|
||||||
apiDebugBlob.setId(apiDebug.getId());
|
apiDebugBlob.setId(apiDebug.getId());
|
||||||
apiDebugBlob.setRequest(request.getRequest().getBytes());
|
apiDebugBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
apiDebugBlobMapper.insert(apiDebugBlob);
|
apiDebugBlobMapper.insert(apiDebugBlob);
|
||||||
|
|
||||||
// 处理文件
|
// 处理文件
|
||||||
|
@ -94,6 +94,7 @@ public class ApiDebugService {
|
||||||
return apiDebug;
|
return apiDebug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Long getNextOrder(String projectId) {
|
private Long getNextOrder(String projectId) {
|
||||||
Long pos = extApiDebugMapper.getPos(projectId);
|
Long pos = extApiDebugMapper.getPos(projectId);
|
||||||
return (pos == null ? 0 : pos) + ORDER_STEP;
|
return (pos == null ? 0 : pos) + ORDER_STEP;
|
||||||
|
@ -121,10 +122,10 @@ public class ApiDebugService {
|
||||||
apiDebug.setUpdateTime(System.currentTimeMillis());
|
apiDebug.setUpdateTime(System.currentTimeMillis());
|
||||||
apiDebugMapper.updateByPrimaryKeySelective(apiDebug);
|
apiDebugMapper.updateByPrimaryKeySelective(apiDebug);
|
||||||
|
|
||||||
if (StringUtils.isNotBlank(request.getRequest())) {
|
if (request.getRequest() != null) {
|
||||||
ApiDebugBlob apiDebugBlob = new ApiDebugBlob();
|
ApiDebugBlob apiDebugBlob = new ApiDebugBlob();
|
||||||
apiDebugBlob.setId(request.getId());
|
apiDebugBlob.setId(request.getId());
|
||||||
apiDebugBlob.setRequest(request.getRequest().getBytes());
|
apiDebugBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
apiDebugBlobMapper.updateByPrimaryKeySelective(apiDebugBlob);
|
apiDebugBlobMapper.updateByPrimaryKeySelective(apiDebugBlob);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,6 +138,14 @@ public class ApiDebugService {
|
||||||
return apiDebug;
|
return apiDebug;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getMsTestElementStr(Object request) {
|
||||||
|
String requestStr = JSON.toJSONString(request);
|
||||||
|
AbstractMsTestElement msTestElement = ApiDataUtils.parseObject(requestStr, AbstractMsTestElement.class);
|
||||||
|
// 手动校验参数
|
||||||
|
ServiceUtils.validateParam(msTestElement);
|
||||||
|
return requestStr;
|
||||||
|
}
|
||||||
|
|
||||||
public void delete(String id, String operator) {
|
public void delete(String id, String operator) {
|
||||||
ApiDebug apiDebug = apiDebugMapper.selectByPrimaryKey(id);
|
ApiDebug apiDebug = apiDebugMapper.selectByPrimaryKey(id);
|
||||||
checkResourceExist(id);
|
checkResourceExist(id);
|
||||||
|
|
|
@ -35,6 +35,7 @@ import io.metersphere.system.service.UserLoginService;
|
||||||
import io.metersphere.system.uid.IDGenerator;
|
import io.metersphere.system.uid.IDGenerator;
|
||||||
import io.metersphere.system.uid.NumGenerator;
|
import io.metersphere.system.uid.NumGenerator;
|
||||||
import io.metersphere.system.utils.CustomFieldUtils;
|
import io.metersphere.system.utils.CustomFieldUtils;
|
||||||
|
import io.metersphere.system.utils.ServiceUtils;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.collections.MapUtils;
|
import org.apache.commons.collections.MapUtils;
|
||||||
|
@ -186,8 +187,8 @@ public class ApiDefinitionService {
|
||||||
apiDefinitionMapper.insertSelective(apiDefinition);
|
apiDefinitionMapper.insertSelective(apiDefinition);
|
||||||
ApiDefinitionBlob apiDefinitionBlob = new ApiDefinitionBlob();
|
ApiDefinitionBlob apiDefinitionBlob = new ApiDefinitionBlob();
|
||||||
apiDefinitionBlob.setId(apiDefinition.getId());
|
apiDefinitionBlob.setId(apiDefinition.getId());
|
||||||
apiDefinitionBlob.setRequest(request.getRequest().getBytes());
|
apiDefinitionBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
apiDefinitionBlob.setResponse(request.getResponse().getBytes());
|
apiDefinitionBlob.setResponse(JSON.toJSONString(request.getResponse()).getBytes());
|
||||||
apiDefinitionBlobMapper.insertSelective(apiDefinitionBlob);
|
apiDefinitionBlobMapper.insertSelective(apiDefinitionBlob);
|
||||||
|
|
||||||
// 处理文件
|
// 处理文件
|
||||||
|
@ -207,6 +208,14 @@ public class ApiDefinitionService {
|
||||||
return apiDefinition;
|
return apiDefinition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getMsTestElementStr(Object request) {
|
||||||
|
String requestStr = JSON.toJSONString(request);
|
||||||
|
AbstractMsTestElement msTestElement = ApiDataUtils.parseObject(requestStr, AbstractMsTestElement.class);
|
||||||
|
// 手动校验参数
|
||||||
|
ServiceUtils.validateParam(msTestElement);
|
||||||
|
return requestStr;
|
||||||
|
}
|
||||||
|
|
||||||
private static ApiFileResourceUpdateRequest getApiFileResourceUpdateRequest(String sourceId, String projectId, String operator) {
|
private static ApiFileResourceUpdateRequest getApiFileResourceUpdateRequest(String sourceId, String projectId, String operator) {
|
||||||
String apiDefinitionDir = DefaultRepositoryDir.getApiDefinitionDir(projectId, sourceId);
|
String apiDefinitionDir = DefaultRepositoryDir.getApiDefinitionDir(projectId, sourceId);
|
||||||
ApiFileResourceUpdateRequest resourceUpdateRequest = new ApiFileResourceUpdateRequest();
|
ApiFileResourceUpdateRequest resourceUpdateRequest = new ApiFileResourceUpdateRequest();
|
||||||
|
@ -244,8 +253,14 @@ public class ApiDefinitionService {
|
||||||
apiDefinitionMapper.updateByPrimaryKeySelective(apiDefinition);
|
apiDefinitionMapper.updateByPrimaryKeySelective(apiDefinition);
|
||||||
ApiDefinitionBlob apiDefinitionBlob = new ApiDefinitionBlob();
|
ApiDefinitionBlob apiDefinitionBlob = new ApiDefinitionBlob();
|
||||||
apiDefinitionBlob.setId(apiDefinition.getId());
|
apiDefinitionBlob.setId(apiDefinition.getId());
|
||||||
apiDefinitionBlob.setRequest(request.getRequest().getBytes());
|
if (request.getRequest() != null) {
|
||||||
apiDefinitionBlob.setResponse(request.getResponse().getBytes());
|
apiDefinitionBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (request.getResponse() != null) {
|
||||||
|
apiDefinitionBlob.setResponse(JSON.toJSONString(request.getResponse()).getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
apiDefinitionBlobMapper.updateByPrimaryKeySelective(apiDefinitionBlob);
|
apiDefinitionBlobMapper.updateByPrimaryKeySelective(apiDefinitionBlob);
|
||||||
|
|
||||||
// 自定义字段
|
// 自定义字段
|
||||||
|
|
|
@ -156,7 +156,7 @@ public class ApiTestCaseService {
|
||||||
|
|
||||||
ApiTestCaseBlob caseBlob = new ApiTestCaseBlob();
|
ApiTestCaseBlob caseBlob = new ApiTestCaseBlob();
|
||||||
caseBlob.setId(testCase.getId());
|
caseBlob.setId(testCase.getId());
|
||||||
caseBlob.setRequest(request.getRequest().getBytes());
|
caseBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
apiTestCaseBlobMapper.insert(caseBlob);
|
apiTestCaseBlobMapper.insert(caseBlob);
|
||||||
|
|
||||||
// 处理文件
|
// 处理文件
|
||||||
|
@ -167,6 +167,14 @@ public class ApiTestCaseService {
|
||||||
return testCase;
|
return testCase;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getMsTestElementStr(Object request) {
|
||||||
|
String requestStr = JSON.toJSONString(request);
|
||||||
|
AbstractMsTestElement msTestElement = ApiDataUtils.parseObject(requestStr, AbstractMsTestElement.class);
|
||||||
|
// 手动校验参数
|
||||||
|
ServiceUtils.validateParam(msTestElement);
|
||||||
|
return requestStr;
|
||||||
|
}
|
||||||
|
|
||||||
private ApiTestCase checkResourceExist(String id) {
|
private ApiTestCase checkResourceExist(String id) {
|
||||||
ApiTestCase testCase = apiTestCaseMapper.selectByPrimaryKey(id);
|
ApiTestCase testCase = apiTestCaseMapper.selectByPrimaryKey(id);
|
||||||
if (testCase == null) {
|
if (testCase == null) {
|
||||||
|
@ -240,7 +248,7 @@ public class ApiTestCaseService {
|
||||||
apiTestCaseMapper.updateByPrimaryKey(testCase);
|
apiTestCaseMapper.updateByPrimaryKey(testCase);
|
||||||
ApiTestCaseBlob apiTestCaseBlob = new ApiTestCaseBlob();
|
ApiTestCaseBlob apiTestCaseBlob = new ApiTestCaseBlob();
|
||||||
apiTestCaseBlob.setId(request.getId());
|
apiTestCaseBlob.setId(request.getId());
|
||||||
apiTestCaseBlob.setRequest(request.getRequest().getBytes());
|
apiTestCaseBlob.setRequest(getMsTestElementStr(request.getRequest()).getBytes());
|
||||||
apiTestCaseBlobMapper.updateByPrimaryKeySelective(apiTestCaseBlob);
|
apiTestCaseBlobMapper.updateByPrimaryKeySelective(apiTestCaseBlob);
|
||||||
|
|
||||||
ApiFileResourceUpdateRequest resourceUpdateRequest = getApiFileResourceUpdateRequest(testCase.getId(), testCase.getProjectId(), userId);
|
ApiFileResourceUpdateRequest resourceUpdateRequest = getApiFileResourceUpdateRequest(testCase.getId(), testCase.getProjectId(), userId);
|
||||||
|
|
|
@ -140,7 +140,7 @@ public class ApiDebugControllerTests extends BaseTest {
|
||||||
request.setModuleId("default");
|
request.setModuleId("default");
|
||||||
request.setProjectId(DEFAULT_PROJECT_ID);
|
request.setProjectId(DEFAULT_PROJECT_ID);
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
|
|
||||||
uploadFileId = doUploadTempFile(getMockMultipartFile());
|
uploadFileId = doUploadTempFile(getMockMultipartFile());
|
||||||
request.setUploadFileIds(List.of(uploadFileId));
|
request.setUploadFileIds(List.of(uploadFileId));
|
||||||
|
@ -203,7 +203,7 @@ public class ApiDebugControllerTests extends BaseTest {
|
||||||
request.setModuleId("default1");
|
request.setModuleId("default1");
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
msHttpElement.setName("test1");
|
msHttpElement.setName("test1");
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
|
|
||||||
// 不带文件的更新
|
// 不带文件的更新
|
||||||
request.setUnLinkRefIds(List.of(fileMetadataId));
|
request.setUnLinkRefIds(List.of(fileMetadataId));
|
||||||
|
|
|
@ -192,9 +192,9 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
// 创建测试数据
|
// 创建测试数据
|
||||||
ApiDefinitionAddRequest request = createApiDefinitionAddRequest();
|
ApiDefinitionAddRequest request = createApiDefinitionAddRequest();
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
List<HttpResponse> msHttpResponse = MsHTTPElementTest.getMsHttpResponse();
|
List<HttpResponse> msHttpResponse = MsHTTPElementTest.getMsHttpResponse();
|
||||||
request.setResponse(ApiDataUtils.toJSONString(msHttpResponse));
|
request.setResponse(msHttpResponse);
|
||||||
|
|
||||||
uploadFileId = doUploadTempFile(getMockMultipartFile("file_upload.JPG"));
|
uploadFileId = doUploadTempFile(getMockMultipartFile("file_upload.JPG"));
|
||||||
request.setUploadFileIds(List.of(uploadFileId));
|
request.setUploadFileIds(List.of(uploadFileId));
|
||||||
|
@ -235,6 +235,10 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
requestPostPermissionTest(PermissionConstants.PROJECT_API_DEFINITION_ADD, ADD, request);
|
requestPostPermissionTest(PermissionConstants.PROJECT_API_DEFINITION_ADD, ADD, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Object getMsElementParam(MsHTTPElement msHTTPElement) {
|
||||||
|
return JSON.parseObject(ApiDataUtils.toJSONString(msHTTPElement));
|
||||||
|
}
|
||||||
|
|
||||||
private ApiDefinitionAddRequest createApiDefinitionAddRequest() {
|
private ApiDefinitionAddRequest createApiDefinitionAddRequest() {
|
||||||
// 创建并返回一个 ApiDefinitionAddRequest 对象,用于测试
|
// 创建并返回一个 ApiDefinitionAddRequest 对象,用于测试
|
||||||
String defaultVersion = extBaseProjectVersionMapper.getDefaultVersion(DEFAULT_PROJECT_ID);
|
String defaultVersion = extBaseProjectVersionMapper.getDefaultVersion(DEFAULT_PROJECT_ID);
|
||||||
|
@ -327,9 +331,9 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
|
|
||||||
request.setCustomFields(customFieldMap);
|
request.setCustomFields(customFieldMap);
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
List<HttpResponse> msHttpResponse = MsHTTPElementTest.getMsHttpResponse();
|
List<HttpResponse> msHttpResponse = MsHTTPElementTest.getMsHttpResponse();
|
||||||
request.setResponse(ApiDataUtils.toJSONString(msHttpResponse));
|
request.setResponse(msHttpResponse);
|
||||||
|
|
||||||
// 清除文件的更新
|
// 清除文件的更新
|
||||||
request.setUnLinkRefIds(List.of(fileMetadataId));
|
request.setUnLinkRefIds(List.of(fileMetadataId));
|
||||||
|
@ -410,8 +414,8 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
addRequest.setDescription("描述内容");
|
addRequest.setDescription("描述内容");
|
||||||
addRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
addRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
||||||
addRequest.setCustomFields(new HashMap<>());
|
addRequest.setCustomFields(new HashMap<>());
|
||||||
addRequest.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
addRequest.setRequest(getMsElementParam(msHttpElement));
|
||||||
addRequest.setResponse(ApiDataUtils.toJSONString(msHttpResponse));
|
addRequest.setResponse(msHttpResponse);
|
||||||
MvcResult mvcResult = this.requestPostWithOkAndReturn(ADD, addRequest);
|
MvcResult mvcResult = this.requestPostWithOkAndReturn(ADD, addRequest);
|
||||||
ApiDefinition apiDefinition = getResultData(mvcResult, ApiDefinition.class);
|
ApiDefinition apiDefinition = getResultData(mvcResult, ApiDefinition.class);
|
||||||
ApiDefinition apiPathAndMethod = apiDefinitionMapper.selectByPrimaryKey(apiDefinition.getId());
|
ApiDefinition apiPathAndMethod = apiDefinitionMapper.selectByPrimaryKey(apiDefinition.getId());
|
||||||
|
@ -420,8 +424,8 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
ApiDefinitionUpdateRequest updateRequest = new ApiDefinitionUpdateRequest();
|
ApiDefinitionUpdateRequest updateRequest = new ApiDefinitionUpdateRequest();
|
||||||
BeanUtils.copyBean(updateRequest, apiPathAndMethod);
|
BeanUtils.copyBean(updateRequest, apiPathAndMethod);
|
||||||
updateRequest.setPath("/api/test/path/method");
|
updateRequest.setPath("/api/test/path/method");
|
||||||
updateRequest.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
updateRequest.setRequest(getMsElementParam(msHttpElement));
|
||||||
updateRequest.setResponse(ApiDataUtils.toJSONString(msHttpResponse));
|
updateRequest.setResponse(msHttpResponse);
|
||||||
updateRequest.setMethod("GET");
|
updateRequest.setMethod("GET");
|
||||||
this.requestPostWithOk(UPDATE, updateRequest);
|
this.requestPostWithOk(UPDATE, updateRequest);
|
||||||
//增加用例
|
//增加用例
|
||||||
|
@ -433,7 +437,7 @@ public class ApiDefinitionControllerTests extends BaseTest {
|
||||||
testCaseAddRequest.setPriority("P0");
|
testCaseAddRequest.setPriority("P0");
|
||||||
testCaseAddRequest.setStatus(ApiDefinitionStatus.PREPARE.getValue());
|
testCaseAddRequest.setStatus(ApiDefinitionStatus.PREPARE.getValue());
|
||||||
testCaseAddRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
testCaseAddRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
||||||
testCaseAddRequest.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
testCaseAddRequest.setRequest(getMsElementParam(msHttpElement));
|
||||||
this.requestPostWithOkAndReturn("/api/case/add", testCaseAddRequest);
|
this.requestPostWithOkAndReturn("/api/case/add", testCaseAddRequest);
|
||||||
}
|
}
|
||||||
updateRequest.setPath("/api/test/path/method/case");
|
updateRequest.setPath("/api/test/path/method/case");
|
||||||
|
|
|
@ -434,7 +434,7 @@ public class ApiScenarioControllerTests extends BaseTest {
|
||||||
apiDefinitionAddRequest.setDescription("描述内容");
|
apiDefinitionAddRequest.setDescription("描述内容");
|
||||||
apiDefinitionAddRequest.setName("test scenario");
|
apiDefinitionAddRequest.setName("test scenario");
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
apiDefinitionAddRequest.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
apiDefinitionAddRequest.setRequest(getMsElementParam(msHttpElement));
|
||||||
apiDefinitionAddRequest.setResponse("{}");
|
apiDefinitionAddRequest.setResponse("{}");
|
||||||
apiDefinition = apiDefinitionService.create(apiDefinitionAddRequest, "admin");
|
apiDefinition = apiDefinitionService.create(apiDefinitionAddRequest, "admin");
|
||||||
|
|
||||||
|
@ -445,10 +445,13 @@ public class ApiScenarioControllerTests extends BaseTest {
|
||||||
apiTestCaseAddRequest.setPriority("P0");
|
apiTestCaseAddRequest.setPriority("P0");
|
||||||
apiTestCaseAddRequest.setStatus("Underway");
|
apiTestCaseAddRequest.setStatus("Underway");
|
||||||
apiTestCaseAddRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
apiTestCaseAddRequest.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
||||||
apiTestCaseAddRequest.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
apiTestCaseAddRequest.setRequest(getMsElementParam(msHttpElement));
|
||||||
apiTestCase = apiTestCaseService.addCase(apiTestCaseAddRequest, "admin");
|
apiTestCase = apiTestCaseService.addCase(apiTestCaseAddRequest, "admin");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Object getMsElementParam(MsHTTPElement msHTTPElement) {
|
||||||
|
return JSON.parseObject(ApiDataUtils.toJSONString(msHTTPElement));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2)
|
@Order(2)
|
||||||
|
|
|
@ -324,7 +324,7 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
||||||
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
||||||
request.setEnvironmentId(environments.get(0).getId());
|
request.setEnvironmentId(environments.get(0).getId());
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
|
|
||||||
uploadFileId = doUploadTempFile(getMockMultipartFile());
|
uploadFileId = doUploadTempFile(getMockMultipartFile());
|
||||||
request.setUploadFileIds(List.of(uploadFileId));
|
request.setUploadFileIds(List.of(uploadFileId));
|
||||||
|
@ -372,6 +372,10 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Object getMsElementParam(MsHTTPElement msHTTPElement) {
|
||||||
|
return JSON.parseObject(ApiDataUtils.toJSONString(msHTTPElement));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(3)
|
@Order(3)
|
||||||
|
@ -498,7 +502,7 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
||||||
request.setTags(List.of("tag1", "tag2"));
|
request.setTags(List.of("tag1", "tag2"));
|
||||||
request.setEnvironmentId(null);
|
request.setEnvironmentId(null);
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
// 不带文件的更新
|
// 不带文件的更新
|
||||||
request.setUnLinkRefIds(List.of(fileMetadataId));
|
request.setUnLinkRefIds(List.of(fileMetadataId));
|
||||||
request.setDeleteFileIds(List.of(uploadFileId));
|
request.setDeleteFileIds(List.of(uploadFileId));
|
||||||
|
@ -638,7 +642,7 @@ public class ApiTestCaseControllerTests extends BaseTest {
|
||||||
request.setStatus("Underway");
|
request.setStatus("Underway");
|
||||||
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
request.setTags(new LinkedHashSet<>(List.of("tag1", "tag2")));
|
||||||
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
MsHTTPElement msHttpElement = MsHTTPElementTest.getMsHttpElement();
|
||||||
request.setRequest(ApiDataUtils.toJSONString(msHttpElement));
|
request.setRequest(getMsElementParam(msHttpElement));
|
||||||
this.requestPost(ADD, request);
|
this.requestPost(ADD, request);
|
||||||
ApiTestCasePageRequest pageRequest = new ApiTestCasePageRequest();
|
ApiTestCasePageRequest pageRequest = new ApiTestCasePageRequest();
|
||||||
pageRequest.setProjectId(DEFAULT_PROJECT_ID);
|
pageRequest.setProjectId(DEFAULT_PROJECT_ID);
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class RestControllerExceptionHandler {
|
||||||
message = getNotFoundMessage(message);
|
message = getNotFoundMessage(message);
|
||||||
}
|
}
|
||||||
return ResponseEntity.status(code % 1000)
|
return ResponseEntity.status(code % 1000)
|
||||||
.body(ResultHolder.error(code, message));
|
.body(ResultHolder.error(code, message, e.getMessage()));
|
||||||
} else {
|
} else {
|
||||||
// 响应码返回 500,设置业务状态码
|
// 响应码返回 500,设置业务状态码
|
||||||
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
|
|
|
@ -1,10 +1,16 @@
|
||||||
package io.metersphere.system.utils;
|
package io.metersphere.system.utils;
|
||||||
|
|
||||||
import io.metersphere.sdk.exception.MSException;
|
import io.metersphere.sdk.exception.MSException;
|
||||||
|
import io.metersphere.sdk.util.CommonBeanFactory;
|
||||||
|
import io.metersphere.system.controller.handler.result.MsHttpResultCode;
|
||||||
import io.metersphere.system.dto.sdk.enums.MoveTypeEnum;
|
import io.metersphere.system.dto.sdk.enums.MoveTypeEnum;
|
||||||
import io.metersphere.system.dto.sdk.request.PosRequest;
|
import io.metersphere.system.dto.sdk.request.PosRequest;
|
||||||
|
import jakarta.validation.ConstraintViolation;
|
||||||
|
import jakarta.validation.Validator;
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.function.BiFunction;
|
import java.util.function.BiFunction;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
@ -90,4 +96,23 @@ public class ServiceUtils {
|
||||||
throw new MSException("更新 pos 字段失败");
|
throw new MSException("更新 pos 字段失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验对象的参数校验注解
|
||||||
|
* @param param
|
||||||
|
*/
|
||||||
|
public static <T> void validateParam(T param) {
|
||||||
|
Validator validator = (Validator) CommonBeanFactory.getBean("validator");
|
||||||
|
Set<ConstraintViolation<T>> errors = validator.validate(param);
|
||||||
|
if (CollectionUtils.isEmpty(errors)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
StringBuilder tips = new StringBuilder();
|
||||||
|
for (ConstraintViolation<T> error : errors) {
|
||||||
|
String fieldName = error.getPropertyPath().toString();
|
||||||
|
String message = error.getMessage();
|
||||||
|
tips.append(fieldName + message).append("; ");
|
||||||
|
}
|
||||||
|
throw new MSException(MsHttpResultCode.VALIDATE_FAILED, tips.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue