diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/ApiTestCaseResult.java b/backend/src/main/java/io/metersphere/api/dto/definition/ApiTestCaseResult.java index 3a6934aa3e..2440bc5e8b 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/ApiTestCaseResult.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/ApiTestCaseResult.java @@ -11,6 +11,7 @@ public class ApiTestCaseResult extends ApiTestCaseWithBLOBs { private String createUser; private String updateUser; private String execResult; + private String apiMethod; private Long execTime; private boolean active = false; private boolean responseActive = false; diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/parse/HarParser.java b/backend/src/main/java/io/metersphere/api/dto/definition/parse/HarParser.java index 5d84a6ec2a..2d017c14bf 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/parse/HarParser.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/parse/HarParser.java @@ -173,7 +173,7 @@ public class HarParser extends HarAbstractParser { return; } HarPostData content = requestBody.postData; - if (!StringUtils.equalsIgnoreCase("GET", requestBody.method) || requestBody.postData == null) { + if (StringUtils.equalsIgnoreCase("GET", requestBody.method) || requestBody.postData == null) { return; } String contentType = content.mimeType; diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java index a6cc7ed85e..70be9377cb 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java @@ -792,7 +792,7 @@ public class ApiDefinitionService { res.setCaseStatus("-"); } - if (StringUtils.equals("ESB", res.getMethod())) { + if (StringUtils.equalsIgnoreCase("esb", res.getMethod())) { esbApiParamService.handleApiEsbParams(res); } } diff --git a/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java b/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java index 2540a207c9..a5d9666588 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiTestCaseService.java @@ -85,7 +85,9 @@ public class ApiTestCaseService { List returnList = extApiTestCaseMapper.list(request); for (ApiTestCaseResult res : returnList) { - esbApiParamService.handleApiEsbParams(res); + if(StringUtils.equalsIgnoreCase(res.getApiMethod(),"esb")){ + esbApiParamService.handleApiEsbParams(res); + } } return returnList; } @@ -145,9 +147,13 @@ public class ApiTestCaseService { } public ApiTestCaseWithBLOBs get(String id) { - ApiTestCaseWithBLOBs returnBlobs = apiTestCaseMapper.selectByPrimaryKey(id); - esbApiParamService.handleApiEsbParams(returnBlobs); - return returnBlobs; +// ApiTestCaseWithBLOBs returnBlobs = apiTestCaseMapper.selectByPrimaryKey(id); + ApiTestCaseInfo model = extApiTestCaseMapper.selectApiCaseInfoByPrimaryKey(id); + if(StringUtils.equalsIgnoreCase(model.getApiMethod(),"esb")){ + esbApiParamService.handleApiEsbParams(model); + } + + return model; } public ApiTestCase create(SaveApiTestCaseRequest request, List bodyFiles) { @@ -440,9 +446,11 @@ public class ApiTestCaseService { } public Map getRequest(ApiTestCaseRequest request) { - List list = extApiTestCaseMapper.getRequest(request); - for (ApiTestCaseWithBLOBs model : list) { - esbApiParamService.handleApiEsbParams(model); + List list = extApiTestCaseMapper.getRequest(request); + for (ApiTestCaseInfo model : list) { + if(StringUtils.equalsIgnoreCase(model.getApiMethod(),"esb")){ + esbApiParamService.handleApiEsbParams(model); + } } return list.stream().collect(Collectors.toMap(ApiTestCaseWithBLOBs::getId, ApiTestCaseWithBLOBs::getRequest)); } diff --git a/backend/src/main/java/io/metersphere/api/service/EsbApiParamService.java b/backend/src/main/java/io/metersphere/api/service/EsbApiParamService.java index 09a80dda05..06ae6dd45f 100644 --- a/backend/src/main/java/io/metersphere/api/service/EsbApiParamService.java +++ b/backend/src/main/java/io/metersphere/api/service/EsbApiParamService.java @@ -107,6 +107,9 @@ public class EsbApiParamService { } public void handleApiEsbParams(ApiDefinitionResult res) { + if(res == null){ + return; + } EsbApiParamsWithBLOBs esbParamBlobs = this.getEsbParamBLOBsByResourceID(res.getId()); if (esbParamBlobs == null) { return; @@ -141,6 +144,9 @@ public class EsbApiParamService { } public void handleApiEsbParams(ApiTestCaseWithBLOBs res) { + if(res==null){ + return; + } EsbApiParamsWithBLOBs esbParamBlobs = this.getEsbParamBLOBsByResourceID(res.getId()); if (esbParamBlobs == null) { return; @@ -184,6 +190,9 @@ public class EsbApiParamService { } public void handleApiEsbParams(ApiTestCaseResult res) { + if(res == null){ + return; + } EsbApiParamsWithBLOBs esbParamBlobs = this.getEsbParamBLOBsByResourceID(res.getId()); if (esbParamBlobs == null) { return; @@ -195,20 +204,6 @@ public class EsbApiParamService { } } -// try { -// if (StringUtils.isNotEmpty(res.getRequest())) { -// JSONObject jsonObj = JSONObject.parseObject(res.getRequest()); -// JSONArray esbDataArray = JSONArray.parseArray(esbParamBlobs.getDataStruct()); -// jsonObj.put("esbDataStruct", esbDataArray); -// jsonObj.put("esbFrontedScript", esbParamBlobs.getFrontedScript()); -// -// JSONArray responseDataArray = JSONArray.parseArray(esbParamBlobs.getResponseDataStruct()); -// jsonObj.put("backEsbDataStruct", responseDataArray); -// -// res.setRequest(jsonObj.toJSONString()); -// } -// } catch (Exception e) { -// } } public SaveApiDefinitionRequest updateEsbRequest(SaveApiDefinitionRequest request) { diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.java b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.java index 0457a6a710..4e1ad1b010 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.java +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.java @@ -2,16 +2,13 @@ package io.metersphere.base.mapper.ext; import io.metersphere.api.dto.datacount.ApiDataCountResult; import io.metersphere.api.dto.definition.ApiTestCaseDTO; +import io.metersphere.api.dto.definition.ApiTestCaseInfo; import io.metersphere.api.dto.definition.ApiTestCaseRequest; import io.metersphere.api.dto.definition.ApiTestCaseResult; import io.metersphere.base.domain.ApiTestCase; -import io.metersphere.base.domain.ApiTestCaseWithBLOBs; -import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; import java.util.List; -import java.util.Map; public interface ExtApiTestCaseMapper { @@ -27,7 +24,9 @@ public interface ExtApiTestCaseMapper { long countByProjectIDAndCreateInThisWeek(@Param("projectId") String projectId, @Param("firstDayTimestamp") long firstDayTimestamp, @Param("lastDayTimestamp") long lastDayTimestamp); - List getRequest(@Param("request") ApiTestCaseRequest request); + List getRequest(@Param("request") ApiTestCaseRequest request); ApiTestCase getNextNum(@Param("definitionId") String definitionId); + + ApiTestCaseInfo selectApiCaseInfoByPrimaryKey(String id); } \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.xml index 1c560eb664..0cea320af6 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiTestCaseMapper.xml @@ -196,13 +196,25 @@ + + + - + select t1.id, t1.request,a.method AS apiMethod + from api_test_case t1 + inner join api_definition a on t1.api_definition_id = a.id where 1 - and id = #{request.id} + and t1.id = #{request.id} - and id in + and t1.id in #{caseId} diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestMapper.xml index 8580002eff..2eb995b3d8 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtLoadTestMapper.xml @@ -148,5 +148,6 @@ AND file_metadata.name LIKE CONCAT('%', #{request.name}, '%') + order by update_time DESC \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index c688f436de..d67ac0605e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,14 +22,22 @@ "el-table-infinite-scroll": "^1.0.10", "el-tree-transfer": "^2.4.7", "element-ui": "^2.13.0", - "generate-schema": "^2.6.0", "html2canvas": "^1.0.0-rc.7", "js-base64": "^3.4.4", + "jsencrypt": "^3.1.0", "json-bigint": "^1.0.0", "json-schema-faker": "^0.5.0-rcv.32", "json5": "^2.1.3", "jsoneditor": "^9.1.2", + "jsonpath": "^1.1.0", "jspdf": "^2.1.1", + "lodash.isboolean": "^3.0.3", + "lodash.isempty": "^4.4.0", + "lodash.isinteger": "^4.0.4", + "lodash.isnull": "^3.0.0", + "lodash.isnumber": "^3.0.3", + "lodash.isobject": "^3.0.2", + "lodash.isstring": "^4.0.1", "md5": "^2.3.0", "mockjs": "^1.1.0", "nprogress": "^0.2.0", @@ -41,16 +49,14 @@ "vue-float-action-button": "^0.6.6", "vue-i18n": "^8.15.3", "vue-jsonpath-picker": "^1.1.5", + "vue-minder-editor-plus": "^1.0.19", "vue-papa-parse": "^2.0.0", "vue-pdf": "^4.2.0", "vue-router": "^3.1.3", "vuedraggable": "^2.24.3", "vuex": "^3.1.2", "xml-js": "^1.6.11", - "yan-progress": "^1.0.3", - "jsonpath": "^1.1.0", - "vue-minder-editor-plus": "^1.0.19", - "jsencrypt": "^3.1.0" + "yan-progress": "^1.0.3" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.1.0", diff --git a/frontend/src/business/components/api/automation/scenario/common/ApiBaseComponent.vue b/frontend/src/business/components/api/automation/scenario/common/ApiBaseComponent.vue index cf5fa0edc0..d9284a41c7 100644 --- a/frontend/src/business/components/api/automation/scenario/common/ApiBaseComponent.vue +++ b/frontend/src/business/components/api/automation/scenario/common/ApiBaseComponent.vue @@ -31,7 +31,7 @@ - + diff --git a/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue b/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue index 034bdff500..332207c0b7 100644 --- a/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue +++ b/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue @@ -83,9 +83,10 @@ import ApiBaseComponent from "../common/ApiBaseComponent"; import ApiResponseComponent from "./ApiResponseComponent"; import CustomizeReqInfo from "@/business/components/api/automation/scenario/common/CustomizeReqInfo"; + const requireComponent = require.context('@/business/components/xpack/', true, /\.vue$/); - const esbDefinition = (requireComponent!=null&&requireComponent.keys().length) > 0 ? requireComponent("./apidefinition/EsbDefinition.vue") : {}; - const esbDefinitionResponse = (requireComponent!=null&&requireComponent.keys().length) > 0 ? requireComponent("./apidefinition/EsbDefinitionResponse.vue") : {}; + const esbDefinition = (requireComponent != null && requireComponent.keys().length) > 0 ? requireComponent("./apidefinition/EsbDefinition.vue") : {}; + const esbDefinitionResponse = (requireComponent != null && requireComponent.keys().length) > 0 ? requireComponent("./apidefinition/EsbDefinitionResponse.vue") : {}; export default { name: "MsApiComponent", @@ -122,7 +123,7 @@ reportId: "", runData: [], isShowInput: false, - showXpackCompnent:false, + showXpackCompnent: false, } }, created() { @@ -148,7 +149,7 @@ } } } - if (requireComponent != null && JSON.stringify(esbDefinition) != '{}'&& JSON.stringify(esbDefinitionResponse) != '{}') { + if (requireComponent != null && JSON.stringify(esbDefinition) != '{}' && JSON.stringify(esbDefinitionResponse) != '{}') { this.showXpackCompnent = true; } }, @@ -245,7 +246,8 @@ } this.request.requestResult = requestResult; this.request.id = response.data.id; - //this.request.disabled = true; + this.request.disabled = true; + this.request.root = true; if (!this.request.projectId) { this.request.projectId = response.data.projectId; } @@ -311,7 +313,7 @@ this.request.requestResult = data; this.request.result = undefined; this.loading = false; - this.$emit('refReload',this.request,this.node); + this.$emit('refReload', this.request, this.node); }, reload() { this.loading = true diff --git a/frontend/src/business/components/api/automation/scenario/variable/VariableList.vue b/frontend/src/business/components/api/automation/scenario/variable/VariableList.vue index 12700397ca..8ddf66800f 100644 --- a/frontend/src/business/components/api/automation/scenario/variable/VariableList.vue +++ b/frontend/src/business/components/api/automation/scenario/variable/VariableList.vue @@ -7,9 +7,9 @@ -
+
- +
@@ -20,9 +20,9 @@ - +
- +
{{ $t('commons.add') }} @@ -37,7 +37,7 @@ {{ $t('commons.delete') }} - +
@@ -219,10 +219,10 @@ return this.selection.includes(row.id) }, open: function (variables, headers, disabled) { - if(variables){ + if (variables) { this.variables = variables; } - if(headers){ + if (headers) { this.headers = headers; } this.visible = true; @@ -313,6 +313,7 @@ float: right; margin-right: 45px; } + fieldset { padding: 0px; margin: 0px; diff --git a/frontend/src/business/components/common/json-schema/JsonSchemaEditor.vue b/frontend/src/business/components/common/json-schema/JsonSchemaEditor.vue index 7a5ebbd578..e3be6893c1 100644 --- a/frontend/src/business/components/common/json-schema/JsonSchemaEditor.vue +++ b/frontend/src/business/components/common/json-schema/JsonSchemaEditor.vue @@ -21,8 +21,8 @@