fix(接口自动化): 外部导入和执行重构去除域名部分
This commit is contained in:
parent
abda6aa758
commit
4e01bf5af3
|
@ -119,9 +119,15 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
|||
sampler.setPort(config.getConfig().getHttpConfig().getPort());
|
||||
sampler.setProtocol(config.getConfig().getHttpConfig().getProtocol());
|
||||
url = config.getConfig().getHttpConfig().getProtocol() + "://" + config.getConfig().getHttpConfig().getSocket();
|
||||
// 补充如果是完整URL 则用自身URL
|
||||
boolean isUrl = false;
|
||||
if (StringUtils.isNotEmpty(this.getUrl()) && isURL(this.getUrl())) {
|
||||
url = this.getUrl();
|
||||
isUrl = true;
|
||||
}
|
||||
URL urlObject = new URL(url);
|
||||
String envPath = StringUtils.equals(urlObject.getPath(), "/") ? "" : urlObject.getPath();
|
||||
if (StringUtils.isNotBlank(this.getPath())) {
|
||||
if (StringUtils.isNotBlank(this.getPath()) && !isUrl) {
|
||||
envPath += this.getPath();
|
||||
}
|
||||
if (CollectionUtils.isNotEmpty(this.getRest()) && this.isRest()) {
|
||||
|
@ -243,6 +249,15 @@ public class MsHTTPSamplerProxy extends MsTestElement {
|
|||
tree.add(headerManager);
|
||||
}
|
||||
|
||||
public boolean isURL(String str) {
|
||||
//转换为小写
|
||||
try {
|
||||
new URL(str);
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRest() {
|
||||
return this.getRest().stream().filter(KeyValue::isEnable).filter(KeyValue::isValid).toArray().length > 0;
|
||||
|
|
|
@ -98,11 +98,14 @@ public class Body {
|
|||
return StringUtils.equals(type, XML);
|
||||
}
|
||||
|
||||
public boolean isWwwFROM() {
|
||||
return StringUtils.equals(type, WWW_FROM);
|
||||
public void initKvs() {
|
||||
this.kvs = new ArrayList<>();
|
||||
this.kvs.add(new KeyValue());
|
||||
}
|
||||
|
||||
public boolean isFromData() {
|
||||
return StringUtils.equals(type, FORM_DATA);
|
||||
public void initBinary() {
|
||||
this.binary = new ArrayList<>();
|
||||
this.binary.add(new KeyValue());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ public class KeyValue {
|
|||
private List<BodyFile> files;
|
||||
private String description;
|
||||
private String contentType;
|
||||
private boolean enable;
|
||||
private boolean enable = true;
|
||||
private boolean encode = true;
|
||||
private boolean required;
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.io.BufferedReader;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -72,7 +73,7 @@ public abstract class ApiImportAbstractParser implements ApiImportParser {
|
|||
protected ApiDefinitionResult buildApiDefinition(String id, String name, String path, String method) {
|
||||
ApiDefinitionResult apiDefinition = new ApiDefinitionResult();
|
||||
apiDefinition.setName(name);
|
||||
apiDefinition.setPath(path);
|
||||
apiDefinition.setPath(formatPath(path));
|
||||
apiDefinition.setProtocol(RequestType.HTTP);
|
||||
apiDefinition.setMethod(method);
|
||||
apiDefinition.setId(id);
|
||||
|
@ -81,17 +82,34 @@ public abstract class ApiImportAbstractParser implements ApiImportParser {
|
|||
return apiDefinition;
|
||||
}
|
||||
|
||||
private String formatPath(String url) {
|
||||
try {
|
||||
URL urlObject = new URL(url);
|
||||
StringBuffer pathBuffer = new StringBuffer(urlObject.getPath());
|
||||
if (StringUtils.isNotEmpty(urlObject.getQuery())) {
|
||||
pathBuffer.append("?").append(urlObject.getQuery());
|
||||
}
|
||||
return pathBuffer.toString();
|
||||
} catch (Exception ex) {
|
||||
return url;
|
||||
}
|
||||
}
|
||||
|
||||
protected MsHTTPSamplerProxy buildRequest(String name, String path, String method) {
|
||||
MsHTTPSamplerProxy request = new MsHTTPSamplerProxy();
|
||||
request.setName(name);
|
||||
request.setPath(path);
|
||||
// 路径去掉域名/IP 地址,保留方法名称及参数
|
||||
request.setPath(formatPath(path));
|
||||
request.setMethod(method);
|
||||
request.setProtocol(RequestType.HTTP);
|
||||
request.setId(UUID.randomUUID().toString());
|
||||
request.setHeaders(new ArrayList<>());
|
||||
request.setArguments(new ArrayList<>());
|
||||
request.setRest(new ArrayList<>());
|
||||
request.setBody(new Body());
|
||||
Body body = new Body();
|
||||
body.initKvs();
|
||||
body.initBinary();
|
||||
request.setBody(body);
|
||||
return request;
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,12 @@
|
|||
<el-collapse-transition>
|
||||
<div v-if="request.active">
|
||||
<div v-if="request.protocol === 'HTTP'">
|
||||
<el-input :placeholder="$t('api_test.definition.request.path_all_info')" v-model="request.url" style="width: 85%;margin-top: 10px" size="small">
|
||||
<el-input :placeholder="$t('api_test.definition.request.path_all_info')" v-if="request.url" v-model="request.url" style="width: 85%;margin-top: 10px" size="small">
|
||||
<el-select v-model="request.method" slot="prepend" style="width: 100px" size="small">
|
||||
<el-option v-for="item in reqOptions" :key="item.id" :label="item.label" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-input>
|
||||
<el-input :placeholder="$t('api_test.definition.request.path_all_info')" v-else v-model="request.path" style="width: 85%;margin-top: 10px" size="small">
|
||||
<el-select v-model="request.method" slot="prepend" style="width: 100px" size="small">
|
||||
<el-option v-for="item in reqOptions" :key="item.id" :label="item.label" :value="item.id"/>
|
||||
</el-select>
|
||||
|
@ -96,20 +101,10 @@
|
|||
try {
|
||||
let urlObject = new URL(this.request.url);
|
||||
let url = urlObject.protocol + "//" + urlObject.host + "/";
|
||||
if (url) {
|
||||
let path = this.request.url.substr(url.length);
|
||||
if (!path.startsWith('/')) {
|
||||
path = "/" + path;
|
||||
}
|
||||
this.request.path = path;
|
||||
} else {
|
||||
this.request.url = this.request.path;
|
||||
}
|
||||
} catch (e) {
|
||||
if (this.request.url) {
|
||||
this.request.path = this.request.url;
|
||||
} else {
|
||||
this.request.url = this.request.path;
|
||||
this.request.url = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -945,8 +945,4 @@
|
|||
font-size: 13px;
|
||||
}
|
||||
|
||||
/deep/ .el-form-item__content {
|
||||
line-height: 100%;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
|
||||
<el-form-item>
|
||||
<el-dropdown split-button type="primary" class="ms-api-buttion" @click="handleCommand"
|
||||
@command="handleCommand" size="small" v-if="testCase===undefined">
|
||||
@command="handleCommand" size="small" v-if="testCase===undefined && !scenario">
|
||||
{{$t('commons.test')}}
|
||||
<el-dropdown-menu slot="dropdown">
|
||||
<el-dropdown-item command="save_as">{{$t('api_test.definition.request.save_as')}}</el-dropdown-item>
|
||||
|
@ -76,7 +76,9 @@
|
|||
method: [{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}],
|
||||
url: [
|
||||
{max: 500, required: true, message: this.$t('commons.input_limit', [1, 500]), trigger: 'blur'},
|
||||
/*
|
||||
{validator: validateURL, trigger: 'blur'}
|
||||
*/
|
||||
],
|
||||
},
|
||||
debugForm: {method: REQ_METHOD[0].id, environmentId: ""},
|
||||
|
|
Loading…
Reference in New Issue