feat(接口测试): 定义导入处理结构

This commit is contained in:
fit2-zhao 2023-11-23 12:44:51 +08:00 committed by Craftsman
parent 87c905e46b
commit 094a594986
9 changed files with 156 additions and 0 deletions

View File

@ -0,0 +1,10 @@
package io.metersphere.api.dto.request;
import lombok.Data;
@Data
public class ExportRequest {
private String id;
// TODO: Add more fields
}

View File

@ -0,0 +1,31 @@
package io.metersphere.api.dto.request;
import lombok.Data;
@Data
public class ImportRequest {
private String id;
private String name;
private String moduleId;
private String environmentId;
private String projectId;
private String platform;
private String swaggerUrl;
//导入策略
private String modeId;
private String userId;
private String versionId; // 新导入选择的版本
private String updateVersionId; // 覆盖导入已存在的接口选择的版本
private String defaultVersion;
//调用类型
private String type;
// 是否开启自定义ID
private Boolean openCustomNum = false;
// 是否覆盖模块
private Boolean coverModule;
// 当前协议
private String protocol;
//上传文件来源目前用于辨别是否是idea插件
private String origin;
}

View File

@ -0,0 +1,5 @@
package io.metersphere.api.enums;
public enum ApiImportPlatform {
MeterSphere, Postman, Swagger3, Plugin, Jmeter, Har
}

View File

@ -0,0 +1,7 @@
package io.metersphere.api.parser;
import io.metersphere.api.dto.request.ExportRequest;
public interface ExportParser<T> {
T parse(ExportRequest request) throws Exception;
}

View File

@ -0,0 +1,10 @@
package io.metersphere.api.parser;
import io.metersphere.api.dto.request.ImportRequest;
import java.io.InputStream;
public interface ImportParser<T> {
T parse(InputStream source, ImportRequest request) throws Exception;
}

View File

@ -0,0 +1,17 @@
package io.metersphere.api.parser;
import io.metersphere.api.enums.ApiImportPlatform;
import io.metersphere.api.parser.api.PostmanParser;
import io.metersphere.api.parser.api.Swagger3Parser;
import org.apache.commons.lang3.StringUtils;
public class ImportParserFactory {
public static ImportParser<?> getImportParser(String platform) {
if (StringUtils.equals(ApiImportPlatform.Swagger3.name(), platform)) {
return new Swagger3Parser<>();
} else if (StringUtils.equals(ApiImportPlatform.Postman.name(), platform)) {
return new PostmanParser<>();
}
return null;
}
}

View File

@ -0,0 +1,17 @@
package io.metersphere.api.parser.api;
import io.metersphere.api.dto.request.ImportRequest;
import io.metersphere.api.parser.ImportParser;
import io.metersphere.sdk.util.LogUtils;
import java.io.InputStream;
public class PostmanParser<T> implements ImportParser<T> {
@Override
public T parse(InputStream source, ImportRequest request) {
LogUtils.info("PostmanParser parse");
return null;
}
}

View File

@ -0,0 +1,23 @@
package io.metersphere.api.parser.api;
import io.metersphere.api.dto.request.ImportRequest;
import io.metersphere.api.parser.ImportParser;
import io.metersphere.sdk.util.LogUtils;
import java.io.InputStream;
public class Swagger3Parser<T> implements ImportParser<T> {
@Override
public T parse(InputStream source, ImportRequest request) throws Exception {
LogUtils.info("Swagger3Parser parse");
// todo: 检查swagger文件版本
// todo检查文件的合规性
// todo解析文件pojo
return null;
}
}

View File

@ -0,0 +1,36 @@
package io.metersphere.api.parser;
import io.metersphere.api.enums.ApiImportPlatform;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Objects;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@AutoConfigureMockMvc
public class ParserTests {
@Test
@Order(1)
public void testImportParserSwagger() throws Exception {
Objects.requireNonNull(ImportParserFactory.getImportParser(ApiImportPlatform.Swagger3.name())).parse(null, null);
}
@Test
@Order(2)
public void testImportParserPostman() throws Exception {
Objects.requireNonNull(ImportParserFactory.getImportParser(ApiImportPlatform.Postman.name())).parse(null, null);
}
@Test
@Order(3)
public void testImportParserMs() throws Exception {
ImportParserFactory.getImportParser(ApiImportPlatform.MeterSphere.name());
}
}