feat: 接口测试支持导入插件录制json格式
This commit is contained in:
parent
97cb512ea9
commit
82cc66dbcd
|
@ -1,7 +1,12 @@
|
|||
package io.metersphere.api.parse;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import io.metersphere.api.dto.parse.ApiImport;
|
||||
import io.metersphere.commons.constants.MsRequestBodyType;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.eclipse.jetty.http.HttpMethod;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
|
@ -10,7 +15,44 @@ public class MsParser extends ApiImportAbstractParser {
|
|||
@Override
|
||||
public ApiImport parse(InputStream source) {
|
||||
String testStr = getApiTestStr(source);
|
||||
return JSON.parseObject(testStr, ApiImport.class);
|
||||
return JSON.parseObject(parsePluginFormat(testStr), ApiImport.class);
|
||||
}
|
||||
|
||||
private String parsePluginFormat(String testStr) {
|
||||
JSONObject testObject = JSONObject.parseObject(testStr);
|
||||
if (testObject.get("scenarios") != null) {
|
||||
return testStr;
|
||||
} else {
|
||||
//插件格式
|
||||
JSONArray scenarios = new JSONArray();
|
||||
testObject.keySet().forEach(scenarioName -> {
|
||||
JSONObject scenario = new JSONObject();
|
||||
scenario.put("name", scenarioName);
|
||||
JSONArray requestsObjects = new JSONArray();
|
||||
JSONObject requestsObject = testObject.getJSONObject(scenarioName);
|
||||
requestsObject.keySet().forEach(requestName -> {
|
||||
JSONObject requestObject = requestsObject.getJSONObject(requestName);
|
||||
requestObject.put("name", requestName);
|
||||
JSONArray bodies = requestObject.getJSONArray("body");
|
||||
if (StringUtils.equalsIgnoreCase(requestObject.getString("method"), HttpMethod.POST.name()) && bodies != null) {
|
||||
StringBuilder bodyStr = new StringBuilder();
|
||||
for (int i = 0; i < bodies.size(); i++) {
|
||||
String body = bodies.getString(i);
|
||||
bodyStr.append(body);
|
||||
}
|
||||
JSONObject bodyObject = new JSONObject();
|
||||
bodyObject.put("raw", bodyStr);
|
||||
bodyObject.put("type", MsRequestBodyType.RAW.value());
|
||||
requestObject.put("body", bodyObject);
|
||||
}
|
||||
requestsObjects.add(requestObject);
|
||||
});
|
||||
scenario.put("requests", requestsObjects);
|
||||
scenarios.add(scenario);
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("scenarios", scenarios);
|
||||
return result.toJSONString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<el-form :model="request" :rules="rules" ref="request" label-width="100px">
|
||||
|
||||
<el-form-item :label="$t('api_test.request.name')" prop="name">
|
||||
<el-input :disabled="isReadOnly" v-model="request.name" maxlength="100" show-word-limit/>
|
||||
<el-input :disabled="isReadOnly" v-model="request.name" maxlength="300" show-word-limit/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item v-if="!request.useEnvironment" :label="$t('api_test.request.url')" prop="url" class="adjust-margin-bottom">
|
||||
|
@ -91,7 +91,7 @@
|
|||
activeName: "parameters",
|
||||
rules: {
|
||||
name: [
|
||||
{max: 100, message: this.$t('commons.input_limit', [1, 100]), trigger: 'blur'}
|
||||
{max: 300, message: this.$t('commons.input_limit', [1, 300]), trigger: 'blur'}
|
||||
],
|
||||
url: [
|
||||
{max: 500, required: true, message: this.$t('commons.input_limit', [1, 500]), trigger: 'blur'},
|
||||
|
|
Loading…
Reference in New Issue