diff --git a/backend/src/main/java/io/metersphere/commons/constants/ParamConstants.java b/backend/src/main/java/io/metersphere/commons/constants/ParamConstants.java index 0a96536d40f89c1018d70995762954f11379cddf..e2fe313ed2bfbe5fad08beaa755856416cee7895 100644 --- a/backend/src/main/java/io/metersphere/commons/constants/ParamConstants.java +++ b/backend/src/main/java/io/metersphere/commons/constants/ParamConstants.java @@ -85,6 +85,7 @@ public interface ParamConstants { this.value = value; } } + public static enum MAIL { HOST("meter.host", 1), PORT("meter.port", 2), diff --git a/backend/src/main/java/io/metersphere/controller/SystemParameterController.java b/backend/src/main/java/io/metersphere/controller/SystemParameterController.java index 1d02d58302a52c5e9b95583778138b10112f5896..3dc6c620b3f34ad5daa74cc2332819be1db7f410 100644 --- a/backend/src/main/java/io/metersphere/controller/SystemParameterController.java +++ b/backend/src/main/java/io/metersphere/controller/SystemParameterController.java @@ -15,13 +15,15 @@ import java.util.List; @RequestMapping(value = "/system") public class SystemParameterController { @Resource - private SystemParameterService SystemParameterService; + private SystemParameterService SystemParameterService; + @PostMapping("/edit/email") - public void editMail(@RequestBody List SystemParameter){ - SystemParameterService.editMail(SystemParameter); + public void editMail(@RequestBody List systemParameter) { + SystemParameterService.editMail(systemParameter); } + @PostMapping("/testConnection") - public void testConnection(@RequestBody HashMap hashMap){ + public void testConnection(@RequestBody HashMap hashMap) { SystemParameterService.testConnection(hashMap); } diff --git a/backend/src/main/java/io/metersphere/service/SystemParameterService.java b/backend/src/main/java/io/metersphere/service/SystemParameterService.java index 7b98a8a6dc29b857d3ec13c8a8acef953ab64ca6..e6d4635a406b52a30c0765156a8603feb0fd9657 100644 --- a/backend/src/main/java/io/metersphere/service/SystemParameterService.java +++ b/backend/src/main/java/io/metersphere/service/SystemParameterService.java @@ -9,6 +9,7 @@ import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; + import java.util.HashMap; import java.util.List; import java.util.Properties; @@ -16,7 +17,6 @@ import java.util.Properties; import org.springframework.mail.javamail.JavaMailSenderImpl; - import javax.annotation.Resource; @@ -39,7 +39,8 @@ public class SystemParameterService { } return result; } - public void editMail(List parameters){ + + public void editMail(List parameters) { List paramList = this.getParamList(ParamConstants.Classify.MAIL.getValue()); boolean empty = paramList.size() < 2; parameters.forEach(parameter -> { @@ -54,13 +55,14 @@ public class SystemParameterService { } }); } + public List getParamList(String type) { SystemParameterExample example = new SystemParameterExample(); example.createCriteria().andParamKeyLike(type + "%"); return systemParameterMapper.selectByExample(example); } - public void testConnection(HashMap hashMap){ + public void testConnection(HashMap hashMap) { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); javaMailSender.setDefaultEncoding("UTF-8"); javaMailSender.setHost(hashMap.get(ParamConstants.MAIL.PORT.getKey())); diff --git a/frontend/src/business/components/api/test/components/ApiRequestForm.vue b/frontend/src/business/components/api/test/components/ApiRequestForm.vue index 668996bc3496255ffdc28f0ee3ecd6a99a82a19e..3594f54ba1349b5527b29522f875e21da30b176f 100644 --- a/frontend/src/business/components/api/test/components/ApiRequestForm.vue +++ b/frontend/src/business/components/api/test/components/ApiRequestForm.vue @@ -75,9 +75,9 @@ let parameters = []; let url = new URL(this.addProtocol(this.request.url)); - url.searchParams.forEach(function (key, value) { + url.searchParams.forEach((value, key) => { if (key && value) { - parameters.push(new KeyValue({name: key, value: value})); + parameters.push(new KeyValue(key, value)); } }); // 添加一个空的,用于填写 diff --git a/frontend/src/business/components/api/test/model/JMX.js b/frontend/src/business/components/api/test/model/JMX.js index 5e5aad36a8081b3bd1acb81df2ae17469a98420d..25d8356028e1dc2c96a72238a3eb957d00bd66d8 100644 --- a/frontend/src/business/components/api/test/model/JMX.js +++ b/frontend/src/business/components/api/test/model/JMX.js @@ -279,7 +279,7 @@ export class HTTPSamplerArguments extends Element { let collectionProp = this.collectionProp('Arguments.arguments'); this.args.forEach(arg => { let elementProp = collectionProp.elementProp(arg.name, 'HTTPArgument'); - elementProp.boolProp('HTTPArgument.always_encode', arg.encode || false); + elementProp.boolProp('HTTPArgument.always_encode', arg.encode || true); elementProp.boolProp('HTTPArgument.use_equals', arg.equals || true); if (arg.name) { elementProp.stringProp('Argument.name', arg.name); diff --git a/frontend/src/business/components/api/test/model/ScenarioModel.js b/frontend/src/business/components/api/test/model/ScenarioModel.js index 46e56647ac67827279f264d7ffc7e9eb5e53b3ab..03c4a226d679cd4b2e76850ef7d7b07f6febb30a 100644 --- a/frontend/src/business/components/api/test/model/ScenarioModel.js +++ b/frontend/src/business/components/api/test/model/ScenarioModel.js @@ -456,7 +456,7 @@ class JMXGenerator { } addScenarioVariables(threadGroup, scenario) { - let args = scenario.variables.filter(this.filter) + let args = this.replaceKV(scenario.variables); if (args.length > 0) { let name = scenario.name + " Variables" threadGroup.put(new Arguments(name, args)); @@ -464,7 +464,7 @@ class JMXGenerator { } addScenarioHeaders(threadGroup, scenario) { - let headers = scenario.headers.filter(this.filter) + let headers = this.replaceKV(scenario.headers); if (headers.length > 0) { let name = scenario.name + " Headers" threadGroup.put(new HeaderManager(name, headers)); @@ -473,14 +473,14 @@ class JMXGenerator { addRequestHeader(httpSamplerProxy, request) { let name = request.name + " Headers"; - let headers = request.headers.filter(this.filter); + let headers = this.replaceKV(request.headers); if (headers.length > 0) { httpSamplerProxy.put(new HeaderManager(name, headers)); } } addRequestArguments(httpSamplerProxy, request) { - let args = request.parameters.filter(this.filter) + let args = this.replaceKV(request.parameters); if (args.length > 0) { httpSamplerProxy.add(new HTTPSamplerArguments(args)); } @@ -514,7 +514,7 @@ class JMXGenerator { getAssertion(regex) { let name = regex.description; let type = JMX_ASSERTION_CONDITION.CONTAINS; // 固定用Match,自己写正则 - let value = regex.expression; + let value = this.replace(regex.expression); switch (regex.subject) { case ASSERTION_REGEX_SUBJECT.RESPONSE_CODE: return new ResponseCodeAssertion(name, type, value); @@ -577,6 +577,20 @@ class JMXGenerator { return config.isValid(); } + replace(str) { + return str.replace(/&/g, "&").replace(//g, ">").replace(/'/g, "'").replace(/"/g, """); + } + + replaceKV(kvs) { + let results = []; + kvs.filter(this.filter).forEach(kv => { + let name = this.replace(kv.name); + let value = this.replace(kv.value); + results.push(new KeyValue(name, value)); + }); + return results; + } + toXML() { let xml = '\n'; xml += this.jmeterTestPlan.toXML(); diff --git a/frontend/src/business/components/settings/system/SystemParameterSetting.vue b/frontend/src/business/components/settings/system/SystemParameterSetting.vue index c8cd98cb381b3e91ccae0091a3e9aca1135f7fef..4995ebf9b327b802a96a6c97cec73497322992f3 100644 --- a/frontend/src/business/components/settings/system/SystemParameterSetting.vue +++ b/frontend/src/business/components/settings/system/SystemParameterSetting.vue @@ -12,7 +12,7 @@ + v-on:input="change()"> @@ -20,7 +20,7 @@ + v-on:input="change()"> @@ -28,7 +28,7 @@ + v-on:input="change()"> @@ -94,7 +94,7 @@ host: [ { required: true, - message: this.$t('commons.host_cannot_be_empty') + message: '' }, ], port: [ @@ -114,30 +114,8 @@ methods: { - host() { - let host = this.formInline.host; - if (!host) { - this.disabledConnection = true; - this.disabledSave = true; - } else { - this.disabledConnection = false; - this.disabledSave = false; - } - }, - port() { - - let port = this.formInline.port; - if (!port) { - this.disabledConnection = true; - this.disabledSave = true; - } else { - this.disabledConnection = false; - this.disabledSave = false; - } - }, - account() { - let account = this.formInline.account; - if (!account) { + change() { + if (!this.formInline.host || !this.formInline.port || !this.formInline.account) { this.disabledConnection = true; this.disabledSave = true; } else {