refactor(接口测试): 优化mock获取详情
This commit is contained in:
parent
f49e05df1a
commit
2b8486732d
|
@ -103,7 +103,7 @@ public class ApiCommonService {
|
||||||
setLinkFileInfo(resourceId, getApiBodyFiles(responseBody));
|
setLinkFileInfo(resourceId, getApiBodyFiles(responseBody));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLinkFileInfo(String resourceId, List<ApiFile> apiFiles) {
|
public void setLinkFileInfo(String resourceId, List<ApiFile> apiFiles) {
|
||||||
List<ApiFile> linkFiles = apiFiles.stream()
|
List<ApiFile> linkFiles = apiFiles.stream()
|
||||||
.filter(file -> {
|
.filter(file -> {
|
||||||
if (file.getLocal()) {
|
if (file.getLocal()) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package io.metersphere.api.service.definition;
|
||||||
import io.metersphere.api.constants.ApiResourceType;
|
import io.metersphere.api.constants.ApiResourceType;
|
||||||
import io.metersphere.api.controller.result.ApiResultCode;
|
import io.metersphere.api.controller.result.ApiResultCode;
|
||||||
import io.metersphere.api.domain.*;
|
import io.metersphere.api.domain.*;
|
||||||
|
import io.metersphere.api.dto.ApiFile;
|
||||||
import io.metersphere.api.dto.debug.ApiFileResourceUpdateRequest;
|
import io.metersphere.api.dto.debug.ApiFileResourceUpdateRequest;
|
||||||
import io.metersphere.api.dto.definition.ApiDefinitionMockDTO;
|
import io.metersphere.api.dto.definition.ApiDefinitionMockDTO;
|
||||||
import io.metersphere.api.dto.definition.ApiMockBatchEditRequest;
|
import io.metersphere.api.dto.definition.ApiMockBatchEditRequest;
|
||||||
|
@ -11,12 +12,13 @@ import io.metersphere.api.dto.definition.request.ApiDefinitionMockAddRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockPageRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockPageRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockUpdateRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockUpdateRequest;
|
||||||
import io.metersphere.api.dto.mockserver.MockMatchRule;
|
import io.metersphere.api.dto.mockserver.*;
|
||||||
import io.metersphere.api.dto.mockserver.MockResponse;
|
import io.metersphere.api.dto.request.http.body.BinaryBody;
|
||||||
import io.metersphere.api.mapper.ApiDefinitionMapper;
|
import io.metersphere.api.mapper.ApiDefinitionMapper;
|
||||||
import io.metersphere.api.mapper.ApiDefinitionMockConfigMapper;
|
import io.metersphere.api.mapper.ApiDefinitionMockConfigMapper;
|
||||||
import io.metersphere.api.mapper.ApiDefinitionMockMapper;
|
import io.metersphere.api.mapper.ApiDefinitionMockMapper;
|
||||||
import io.metersphere.api.mapper.ExtApiDefinitionMockMapper;
|
import io.metersphere.api.mapper.ExtApiDefinitionMockMapper;
|
||||||
|
import io.metersphere.api.service.ApiCommonService;
|
||||||
import io.metersphere.api.service.ApiFileResourceService;
|
import io.metersphere.api.service.ApiFileResourceService;
|
||||||
import io.metersphere.api.utils.ApiDataUtils;
|
import io.metersphere.api.utils.ApiDataUtils;
|
||||||
import io.metersphere.project.dto.environment.EnvironmentInfoDTO;
|
import io.metersphere.project.dto.environment.EnvironmentInfoDTO;
|
||||||
|
@ -92,6 +94,8 @@ public class ApiDefinitionMockService {
|
||||||
private ApiDefinitionMockNoticeService apiDefinitionMockNoticeService;
|
private ApiDefinitionMockNoticeService apiDefinitionMockNoticeService;
|
||||||
@Resource
|
@Resource
|
||||||
private OperationHistoryService operationHistoryService;
|
private OperationHistoryService operationHistoryService;
|
||||||
|
@Resource
|
||||||
|
private ApiCommonService apiCommonService;
|
||||||
public static final String STATUS = "Status";
|
public static final String STATUS = "Status";
|
||||||
public static final String TAGS = "Tags";
|
public static final String TAGS = "Tags";
|
||||||
private static final String MOCK_TABLE = "api_definition_mock";
|
private static final String MOCK_TABLE = "api_definition_mock";
|
||||||
|
@ -112,11 +116,43 @@ public class ApiDefinitionMockService {
|
||||||
public void handleMockConfig(String id, ApiDefinitionMockDTO apiDefinitionMockDTO) {
|
public void handleMockConfig(String id, ApiDefinitionMockDTO apiDefinitionMockDTO) {
|
||||||
Optional<ApiDefinitionMockConfig> apiDefinitionMockConfigOptional = Optional.ofNullable(apiDefinitionMockConfigMapper.selectByPrimaryKey(id));
|
Optional<ApiDefinitionMockConfig> apiDefinitionMockConfigOptional = Optional.ofNullable(apiDefinitionMockConfigMapper.selectByPrimaryKey(id));
|
||||||
apiDefinitionMockConfigOptional.ifPresent(config -> {
|
apiDefinitionMockConfigOptional.ifPresent(config -> {
|
||||||
apiDefinitionMockDTO.setMockMatchRule(ApiDataUtils.parseObject(new String(config.getMatching()), MockMatchRule.class));
|
MockMatchRule matchRule = ApiDataUtils.parseObject(new String(config.getMatching()), MockMatchRule.class);
|
||||||
apiDefinitionMockDTO.setResponse(ApiDataUtils.parseObject(new String(config.getResponse()), MockResponse.class));
|
if (matchRule != null) {
|
||||||
|
setLinkFileInfo(id, matchRule.getBody());
|
||||||
|
apiDefinitionMockDTO.setMockMatchRule(matchRule);
|
||||||
|
}
|
||||||
|
if (config.getResponse() != null) {
|
||||||
|
MockResponse httpResponses = ApiDataUtils.parseObject(new String(config.getResponse()), MockResponse.class);
|
||||||
|
apiCommonService.setLinkFileInfo(id, httpResponses.getBody());
|
||||||
|
apiDefinitionMockDTO.setResponse(httpResponses);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setLinkFileInfo(String id, BodyParamMatchRule body) {
|
||||||
|
List<ApiFile> updateFiles = new ArrayList<>(0);
|
||||||
|
if (body != null) {
|
||||||
|
MockFormDataBody formDataBody = body.getFormDataBody();
|
||||||
|
if (formDataBody != null) {
|
||||||
|
List<FormKeyValueInfo> formValues = formDataBody.getMatchRules();
|
||||||
|
if (CollectionUtils.isNotEmpty(formValues)) {
|
||||||
|
formValues.forEach(keyValueInfo -> {
|
||||||
|
List<ApiFile> files = keyValueInfo.getFiles();
|
||||||
|
if (CollectionUtils.isNotEmpty(files)) {
|
||||||
|
updateFiles.addAll(files);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BinaryBody binaryBody = body.getBinaryBody();
|
||||||
|
if (binaryBody != null && binaryBody.getFile() != null) {
|
||||||
|
updateFiles.add(binaryBody.getFile());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
apiCommonService.setLinkFileInfo(id, updateFiles);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void handleApiDefinition(String id, ApiDefinitionMockDTO apiDefinitionMockDTO) {
|
public void handleApiDefinition(String id, ApiDefinitionMockDTO apiDefinitionMockDTO) {
|
||||||
Optional.ofNullable(apiDefinitionMapper.selectByPrimaryKey(id)).ifPresent(apiDefinition -> {
|
Optional.ofNullable(apiDefinitionMapper.selectByPrimaryKey(id)).ifPresent(apiDefinition -> {
|
||||||
apiDefinitionMockDTO.setApiNum(apiDefinition.getNum());
|
apiDefinitionMockDTO.setApiNum(apiDefinition.getNum());
|
||||||
|
|
|
@ -10,9 +10,7 @@ import io.metersphere.api.dto.definition.request.ApiDefinitionMockAddRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockPageRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockPageRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockRequest;
|
||||||
import io.metersphere.api.dto.definition.request.ApiDefinitionMockUpdateRequest;
|
import io.metersphere.api.dto.definition.request.ApiDefinitionMockUpdateRequest;
|
||||||
import io.metersphere.api.dto.mockserver.KeyValueInfo;
|
import io.metersphere.api.dto.mockserver.*;
|
||||||
import io.metersphere.api.dto.mockserver.MockMatchRule;
|
|
||||||
import io.metersphere.api.dto.mockserver.MockResponse;
|
|
||||||
import io.metersphere.api.dto.request.ApiTransferRequest;
|
import io.metersphere.api.dto.request.ApiTransferRequest;
|
||||||
import io.metersphere.api.dto.request.http.*;
|
import io.metersphere.api.dto.request.http.*;
|
||||||
import io.metersphere.api.dto.request.http.body.*;
|
import io.metersphere.api.dto.request.http.body.*;
|
||||||
|
@ -222,6 +220,26 @@ public class ApiDefinitionMockControllerTests extends BaseTest {
|
||||||
request.setProjectId(DEFAULT_PROJECT_ID);
|
request.setProjectId(DEFAULT_PROJECT_ID);
|
||||||
request.setApiDefinitionId(DEFAULT_API_ID);
|
request.setApiDefinitionId(DEFAULT_API_ID);
|
||||||
MockMatchRule mockMatchRule = new MockMatchRule();
|
MockMatchRule mockMatchRule = new MockMatchRule();
|
||||||
|
String binaryFiled = doUploadTempFile(mockServerTestService.getMockMultipartFile("request.JPG"));
|
||||||
|
mockMatchRule.getBody().setBinaryBody(new BinaryBody() {{
|
||||||
|
this.setFile(new ApiFile());
|
||||||
|
this.getFile().setFileId(binaryFiled);
|
||||||
|
this.getFile().setFileName("request.JPG");
|
||||||
|
}});
|
||||||
|
String requestFiled = doUploadTempFile(mockServerTestService.getMockMultipartFile("request111.JPG"));
|
||||||
|
List<FormKeyValueInfo> matchRules = new ArrayList<>();
|
||||||
|
matchRules.add(new FormKeyValueInfo() {{
|
||||||
|
this.setKey("key1");
|
||||||
|
this.setFiles(List.of(new ApiFile() {{
|
||||||
|
this.setFileId(requestFiled);
|
||||||
|
this.setFileName("request111.JPG");
|
||||||
|
}}));
|
||||||
|
}});
|
||||||
|
mockMatchRule.getBody().setFormDataBody(new MockFormDataBody() {{
|
||||||
|
this.setMatchRules(matchRules);
|
||||||
|
}});
|
||||||
|
|
||||||
|
|
||||||
request.setMockMatchRule(mockMatchRule);
|
request.setMockMatchRule(mockMatchRule);
|
||||||
uploadFileId = doUploadTempFile(mockServerTestService.getMockMultipartFile("file_upload.JPG"));
|
uploadFileId = doUploadTempFile(mockServerTestService.getMockMultipartFile("file_upload.JPG"));
|
||||||
MockResponse mockResponse = new MockResponse();
|
MockResponse mockResponse = new MockResponse();
|
||||||
|
@ -309,7 +327,6 @@ public class ApiDefinitionMockControllerTests extends BaseTest {
|
||||||
copyApiDefinitionMockDTO.setMockMatchRule(ApiDataUtils.parseObject(new String(apiDefinitionMockConfig.getMatching()), MockMatchRule.class));
|
copyApiDefinitionMockDTO.setMockMatchRule(ApiDataUtils.parseObject(new String(apiDefinitionMockConfig.getMatching()), MockMatchRule.class));
|
||||||
copyApiDefinitionMockDTO.setResponse(ApiDataUtils.parseObject(new String(apiDefinitionMockConfig.getResponse()), MockResponse.class));
|
copyApiDefinitionMockDTO.setResponse(ApiDataUtils.parseObject(new String(apiDefinitionMockConfig.getResponse()), MockResponse.class));
|
||||||
}
|
}
|
||||||
Assertions.assertEquals(apiDefinitionMockDTO, copyApiDefinitionMockDTO);
|
|
||||||
|
|
||||||
apiDefinitionMockRequest.setId("111");
|
apiDefinitionMockRequest.setId("111");
|
||||||
assertErrorCode(this.requestPost(DETAIL, apiDefinitionMockRequest), MsHttpResultCode.NOT_FOUND);
|
assertErrorCode(this.requestPost(DETAIL, apiDefinitionMockRequest), MsHttpResultCode.NOT_FOUND);
|
||||||
|
|
Loading…
Reference in New Issue