fix(接口测试): 修复swagger导入失败的缺陷

--bug=1026085 --user=王孝刚 [接口测试]github#24323接口导入-导入 Swagger 文件报“格式错误”
https://www.tapd.cn/55049933/s/1375755
This commit is contained in:
wxg0103 2023-05-25 14:31:13 +08:00 committed by fit2-zhao
parent 9c755fe8b0
commit 0d57785de6
2 changed files with 35 additions and 29 deletions

View File

@ -24,6 +24,7 @@ import io.swagger.models.auth.AuthorizationValue;
import io.swagger.models.parameters.*; import io.swagger.models.parameters.*;
import io.swagger.models.properties.*; import io.swagger.models.properties.*;
import io.swagger.parser.SwaggerParser; import io.swagger.parser.SwaggerParser;
import lombok.val;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -226,28 +227,30 @@ public class Swagger2Parser extends SwaggerAbstractParser {
// todo 路径变量 {xxx} 是否要转换 // todo 路径变量 {xxx} 是否要转换
for (Parameter parameter : parameters) { for (Parameter parameter : parameters) {
switch (parameter.getIn()) { if (StringUtils.isNotBlank(parameter.getIn())) {
case SwaggerParameterType.PATH: switch (parameter.getIn()) {
parsePathParameters(parameter, request.getRest()); case SwaggerParameterType.PATH:
break; parsePathParameters(parameter, request.getRest());
case SwaggerParameterType.QUERY: break;
parseQueryParameters(parameter, request.getArguments()); case SwaggerParameterType.QUERY:
break; parseQueryParameters(parameter, request.getArguments());
case SwaggerParameterType.FORM_DATA: break;
parseFormDataParameters((FormParameter) parameter, request.getBody()); case SwaggerParameterType.FORM_DATA:
break; parseFormDataParameters((FormParameter) parameter, request.getBody());
case SwaggerParameterType.BODY: break;
parseRequestBodyParameters(parameter, request.getBody()); case SwaggerParameterType.BODY:
break; parseRequestBodyParameters(parameter, request.getBody());
case SwaggerParameterType.HEADER: break;
parseHeaderParameters(parameter, request.getHeaders()); case SwaggerParameterType.HEADER:
break; parseHeaderParameters(parameter, request.getHeaders());
case SwaggerParameterType.COOKIE: break;
parseCookieParameters(parameter, request.getHeaders()); case SwaggerParameterType.COOKIE:
break; parseCookieParameters(parameter, request.getHeaders());
break;
// case SwaggerParameterType.FILE: // case SwaggerParameterType.FILE:
// parsePathParameters(parameter, request); // parsePathParameters(parameter, request);
// break; // break;
}
} }
} }
} }

View File

@ -34,6 +34,7 @@ import io.swagger.v3.parser.core.models.AuthorizationValue;
import io.swagger.v3.parser.core.models.SwaggerParseResult; import io.swagger.v3.parser.core.models.SwaggerParseResult;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils; import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
@ -626,16 +627,18 @@ public class Swagger3Parser extends SwaggerAbstractParser {
Schema schema = getSchema(parameter.getSchema()); Schema schema = getSchema(parameter.getSchema());
Set<String> refSet = new HashSet<>(); Set<String> refSet = new HashSet<>();
JsonSchemaItem jsonSchemaItem = parseSchema(schema, refSet); JsonSchemaItem jsonSchemaItem = parseSchema(schema, refSet);
if (MapUtils.isEmpty(jsonSchemaItem.getProperties())) { if (ObjectUtils.isNotEmpty(jsonSchemaItem)){
arguments.add(new KeyValue(queryParameter.getName(), getDefaultValue(queryParameter, jsonSchemaItem), getDefaultStringValue(queryParameter.getDescription()), parameter.getRequired(), getMin(jsonSchemaItem), getMax(jsonSchemaItem))); if (MapUtils.isEmpty(jsonSchemaItem.getProperties())) {
} else { arguments.add(new KeyValue(queryParameter.getName(), getDefaultValue(queryParameter, jsonSchemaItem), getDefaultStringValue(queryParameter.getDescription()), parameter.getRequired(), getMin(jsonSchemaItem), getMax(jsonSchemaItem)));
Map<String, JsonSchemaItem> properties = jsonSchemaItem.getProperties(); } else {
properties.forEach((key, value) -> { Map<String, JsonSchemaItem> properties = jsonSchemaItem.getProperties();
arguments.add(new KeyValue(key, getDefaultValue(queryParameter, value), properties.forEach((key, value) -> {
getDefaultStringValue(value.getDescription()), arguments.add(new KeyValue(key, getDefaultValue(queryParameter, value),
parameter.getRequired(), getDefaultStringValue(value.getDescription()),
getMin(value), getMax(value))); parameter.getRequired(),
}); getMin(value), getMax(value)));
});
}
} }
} }