diff --git a/backend/src/main/java/io/metersphere/api/dto/automation/parse/MsJmeterParser.java b/backend/src/main/java/io/metersphere/api/dto/automation/parse/MsJmeterParser.java index 971ea265f9..914ef1eef0 100644 --- a/backend/src/main/java/io/metersphere/api/dto/automation/parse/MsJmeterParser.java +++ b/backend/src/main/java/io/metersphere/api/dto/automation/parse/MsJmeterParser.java @@ -174,7 +174,7 @@ public class MsJmeterParser extends ApiImportAbstractParser { } } } - samplerProxy.setPath(source.getPath()); + samplerProxy.setPath(""); samplerProxy.setMethod(source.getMethod()); if (source.getUrl() != null) { samplerProxy.setUrl(source.getUrl().toString()); diff --git a/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java b/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java index 73238aab23..d09567ba5d 100644 --- a/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java +++ b/backend/src/main/java/io/metersphere/api/dto/definition/request/sampler/MsHTTPSamplerProxy.java @@ -137,7 +137,9 @@ public class MsHTTPSamplerProxy extends MsTestElement { URL urlObject = new URL(url); if (isUrl) { sampler.setDomain(URLDecoder.decode(urlObject.getHost(), "UTF-8")); - sampler.setPort(urlObject.getPort()); + if (urlObject.getPort() > 0) { + sampler.setPort(urlObject.getPort()); + } sampler.setProtocol(urlObject.getProtocol()); } else { sampler.setDomain(config.getConfig().get(this.getProjectId()).getHttpConfig().getDomain()); diff --git a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java index 6ac27b6001..7483b5e6e2 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiAutomationService.java @@ -72,7 +72,7 @@ public class ApiAutomationService { @Resource private TestPlanApiScenarioMapper testPlanApiScenarioMapper; @Resource - private TestCaseReviewScenarioMapper testCaseReviewScenarioMapper; + private TestCaseReviewScenarioMapper testCaseReviewScenarioMapper; @Resource private JMeterService jMeterService; @Resource @@ -96,11 +96,13 @@ public class ApiAutomationService { List list = extApiScenarioMapper.list(request); return list; } + public List listReview(ApiScenarioRequest request) { request = this.initRequest(request, true, true); List list = extApiScenarioMapper.listReview(request); return list; } + private void setApiScenarioProjectIds(ApiScenarioDTO data) { // 如果场景步骤涉及多项目,则把涉及到的项目ID保存在projectIds属性 List idList = new ArrayList<>(); @@ -335,8 +337,9 @@ public class ApiAutomationService { if (scenarioWithBLOBs != null) { BeanUtils.copyBean(apiScenarioDTO, scenarioWithBLOBs); setApiScenarioProjectIds(apiScenarioDTO); + return apiScenarioDTO; } - return apiScenarioDTO; + return null; } public List getApiScenarios(List ids) { @@ -715,14 +718,15 @@ public class ApiAutomationService { testPlanApiScenarioMapper.insert(testPlanApiScenario); }); } - public void relevanceReview(ApiCaseRelevanceRequest request){ + + public void relevanceReview(ApiCaseRelevanceRequest request) { Map> mapping = request.getMapping(); Map envMap = request.getEnvMap(); Set set = mapping.keySet(); if (set.isEmpty()) { return; } - set.forEach(id->{ + set.forEach(id -> { Map newEnvMap = new HashMap<>(16); if (envMap != null && !envMap.isEmpty()) { List list = mapping.get(id); @@ -730,7 +734,7 @@ public class ApiAutomationService { newEnvMap.put(l, envMap.get(l)); }); } - TestCaseReviewScenario testCaseReviewScenario=new TestCaseReviewScenario(); + TestCaseReviewScenario testCaseReviewScenario = new TestCaseReviewScenario(); testCaseReviewScenario.setId(UUID.randomUUID().toString()); testCaseReviewScenario.setApiScenarioId(id); testCaseReviewScenario.setTestCaseReviewId(request.getReviewId()); @@ -741,6 +745,7 @@ public class ApiAutomationService { }); } + public List selectByIds(List ids) { ApiScenarioExample example = new ApiScenarioExample(); example.createCriteria().andIdIn(ids); diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml index a520d29d33..2e56a206ce 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestReviewCaseMapper.xml @@ -161,12 +161,12 @@ #{value} - - and test_case_review_test_case.status in + + and test_case.review_status in #{value} - + diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index 1b1a647ea8..bc850fe47d 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -551,8 +551,8 @@ public class TestPlanService { queryTestPlanRequest.setId(planId); TestPlanDTO testPlan = extTestPlanMapper.list(queryTestPlanRequest).get(0); - String projectName = getProjectNameByPlanId(planId); - testPlan.setProjectName(projectName); + Project project = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + testPlan.setProjectName(project.getName()); TestCaseReport testCaseReport = testCaseReportMapper.selectByPrimaryKey(testPlan.getReportId()); JSONObject content = JSONObject.parseObject(testCaseReport.getContent()); @@ -708,8 +708,8 @@ public class TestPlanService { queryTestPlanRequest.setId(planId); TestPlanDTO testPlan = extTestPlanMapper.list(queryTestPlanRequest).get(0); - String projectName = getProjectNameByPlanId(planId); - testPlan.setProjectName(projectName); + Project project = projectMapper.selectByPrimaryKey(testPlan.getProjectId()); + testPlan.setProjectName(project.getName()); TestCaseReport testCaseReport = testCaseReportMapper.selectByPrimaryKey(testPlan.getReportId()); JSONObject content = JSONObject.parseObject(testCaseReport.getContent()); diff --git a/backend/src/main/java/io/metersphere/xpack b/backend/src/main/java/io/metersphere/xpack index efd6af73b7..245845e07b 160000 --- a/backend/src/main/java/io/metersphere/xpack +++ b/backend/src/main/java/io/metersphere/xpack @@ -1 +1 @@ -Subproject commit efd6af73b7c5cc53cd4515772000bc1436c49837 +Subproject commit 245845e07bf3fe2f60311eeb78f8f109301a2d39 diff --git a/frontend/src/business/components/api/automation/report/ApiReportList.vue b/frontend/src/business/components/api/automation/report/ApiReportList.vue index f26eda2ed4..f4aedc38b4 100644 --- a/frontend/src/business/components/api/automation/report/ApiReportList.vue +++ b/frontend/src/business/components/api/automation/report/ApiReportList.vue @@ -159,6 +159,10 @@ export default { }, handleView(report) { this.reportId = report.id; + if(report.status ==='Running'){ + this.$warning("正在运行中,请稍后查看") + return; + } this.currentProjectId = report.projectId; this.$router.push({ path: 'report/view/' + report.id, 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 d88ebfb62f..5ea30dcb85 100644 --- a/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue +++ b/frontend/src/business/components/api/automation/scenario/component/ApiComponent.vue @@ -202,7 +202,7 @@ new URL(url); this.request.url = url; } catch (e) { - if (url) { + if (url && (!url.startsWith("http://") || !url.startsWith("https://"))) { this.request.path = url; this.request.url = undefined; } diff --git a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue index f39fce3b76..af20e63c9b 100644 --- a/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue +++ b/frontend/src/business/components/api/definition/components/case/ApiCaseItem.vue @@ -194,7 +194,7 @@ this.$emit('batchEditCase'); }, deleteCase(index, row) { - this.$alert(this.$t('api_test.definition.request.delete_confirm') + ' ' + row.name + " ?", '', { + this.$alert(this.$t('api_test.definition.request.delete_case_confirm') + ' ' + row.name + " ?", '', { confirmButtonText: this.$t('commons.confirm'), callback: (action) => { if (action === 'confirm') { @@ -305,10 +305,6 @@ row.id = data.id; row.createTime = data.createTime; row.updateTime = data.updateTime; - if (!row.message) { - this.$success(this.$t('commons.save_success')); - this.$emit('refresh'); - } }); }, saveTestCase(row) { @@ -317,7 +313,6 @@ } else { this.saveCase(row); } - }, showInput(row) { // row.type = "create"; diff --git a/frontend/src/business/components/track/home/components/CaseCountCard.vue b/frontend/src/business/components/track/home/components/CaseCountCard.vue index fe96b3d429..fcac031ba3 100644 --- a/frontend/src/business/components/track/home/components/CaseCountCard.vue +++ b/frontend/src/business/components/track/home/components/CaseCountCard.vue @@ -94,8 +94,8 @@ 未通过 {{"\xa0\xa0"}} - - {{trackCountData.passCount}} + + {{trackCountData.unPassCount}} @@ -103,8 +103,8 @@ 已通过 {{"\xa0\xa0"}} - - {{trackCountData.unPassCount}} + + {{trackCountData.passCount}} diff --git a/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue b/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue index 21d51de87e..c3c1a9dd0b 100644 --- a/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue +++ b/frontend/src/business/components/track/plan/view/comonents/base/TestCaseRelevanceBase.vue @@ -34,6 +34,7 @@ import MsDialogFooter from '../../../../../common/components/MsDialogFooter' import SelectMenu from "../../../../common/SelectMenu"; import RelevanceDialog from "./RelevanceDialog"; + import {getCurrentProjectID} from "@/common/js/utils"; export default { name: "TestCaseRelevanceBase", @@ -93,10 +94,17 @@ this.result = this.$get("/project/listAll", res => { let data = res.data; if (data) { + const index = data.findIndex(d => d.id === getCurrentProjectID()); this.projects = data; - this.projectId = data[0].id; - this.projectName = data[0].name; - this.changeProject(data[0]); + if (index !== -1) { + this.projectId = data[index].id; + this.projectName = data[index].name; + this.changeProject(data[index]); + } else { + this.projectId = data[0].id; + this.projectName = data[0].name; + this.changeProject(data[0]); + } } }) }, diff --git a/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue b/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue index cfa3aa69c9..c4d3b1f1e5 100644 --- a/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/functional/FunctionalTestCaseEdit.vue @@ -591,17 +591,23 @@ export default { const project = res.data; if (project.tapdId) { this.hasTapdId = true; - this.result = this.$get("/issues/tapd/user/" + this.testCase.caseId, response => { - this.users = response.data; + this.result = this.$get("/issues/tapd/user/" + this.testCase.caseId).then(response => { + this.users = response.data.data; + }).catch(() => { + console.log("get tapd user error."); }) } if (project.zentaoId) { this.hasZentaoId = true; - this.result = this.$get("/issues/zentao/builds/" + this.testCase.caseId, response => { - this.Builds = response.data; + this.result = this.$get("/issues/zentao/builds/" + this.testCase.caseId).then(response => { + this.Builds = response.data.data; + }).catch(() => { + console.log("get zentao builds error."); }) - this.result = this.$get("/issues/zentao/user/" + this.testCase.caseId, response => { - this.zentaoUsers = response.data; + this.result = this.$get("/issues/zentao/user/" + this.testCase.caseId).then(response => { + this.zentaoUsers = response.data.data; + }).catch(() => { + console.log("get zentao user error."); }) } }) @@ -649,8 +655,10 @@ export default { this.testCase.zentaoAssigned = ""; }, getIssues(caseId) { - this.result = this.$get("/issues/get/" + caseId, response => { - this.issues = response.data; + this.result = this.$get("/issues/get/" + caseId).then(response => { + this.issues = response.data.data; + }).catch(() => { + console.log("get issues error") }) }, closeIssue(row) { diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index d3c3ba9835..06b31ddd4f 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit d3c3ba983502dc9864db88645af392e36004f301 +Subproject commit 06b31ddd4f2542cb86bf3e31a1a8f624742a2193 diff --git a/frontend/src/i18n/en-US.js b/frontend/src/i18n/en-US.js index 86cff09907..af75fd4080 100644 --- a/frontend/src/i18n/en-US.js +++ b/frontend/src/i18n/en-US.js @@ -624,6 +624,7 @@ export default { res_param: "Response content", batch_delete: "Batch deletion", delete_confirm: "Confirm deletion", + delete_case_confirm: "Confirm case deletion", delete_confirm_step: "Confirm deletion step", assertions_rule: "Assertion rule", response_header: "Response header", diff --git a/frontend/src/i18n/zh-CN.js b/frontend/src/i18n/zh-CN.js index e4d609b0af..75775fe6e4 100644 --- a/frontend/src/i18n/zh-CN.js +++ b/frontend/src/i18n/zh-CN.js @@ -625,6 +625,7 @@ export default { res_param: "响应内容", batch_delete: "批量删除", delete_confirm: "确认删除接口", + delete_case_confirm: "确认删除用例", delete_confirm_step: "确认删除步骤", assertions_rule: "断言规则", response_header: "响应头", diff --git a/frontend/src/i18n/zh-TW.js b/frontend/src/i18n/zh-TW.js index c28d257f3d..8057211e0b 100644 --- a/frontend/src/i18n/zh-TW.js +++ b/frontend/src/i18n/zh-TW.js @@ -624,6 +624,7 @@ export default { res_param: "響應內容", batch_delete: "批量刪除", delete_confirm: "確認刪除接口", + delete_case_confirm: "確認刪除用例", delete_confirm_step: "確認刪除步驟", assertions_rule: "斷言規則", response_header: "響應頭",