feat(接口测试): 接口测试获取环境详情信息
This commit is contained in:
parent
7d960ce8d9
commit
f870faefca
|
@ -6,10 +6,12 @@ import io.metersphere.api.service.ApiTestService;
|
|||
import io.metersphere.jmeter.mock.Mock;
|
||||
import io.metersphere.plugin.api.dto.ApiPluginSelectOption;
|
||||
import io.metersphere.project.dto.customfunction.request.CustomFunctionRunRequest;
|
||||
import io.metersphere.project.dto.environment.EnvironmentConfig;
|
||||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
import io.metersphere.sdk.dto.api.task.TaskRequestDTO;
|
||||
import io.metersphere.system.dto.ProtocolDTO;
|
||||
import io.metersphere.system.security.CheckOwner;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
|
@ -36,6 +38,7 @@ public class ApiTestController {
|
|||
|
||||
@GetMapping("/protocol/{organizationId}")
|
||||
@Operation(summary = "获取协议插件的的协议列表")
|
||||
@CheckOwner(resourceId = "#organizationId", resourceType = "organization")
|
||||
public List<ProtocolDTO> getProtocols(@PathVariable String organizationId) {
|
||||
return apiTestService.getProtocols(organizationId);
|
||||
}
|
||||
|
@ -84,7 +87,20 @@ public class ApiTestController {
|
|||
PermissionConstants.PROJECT_API_DEFINITION_CASE_READ,
|
||||
PermissionConstants.PROJECT_API_SCENARIO_READ
|
||||
}, logical = Logical.OR)
|
||||
@CheckOwner(resourceId = "#projectId", resourceType = "project")
|
||||
public List<Environment> getEnvList(@PathVariable String projectId) {
|
||||
return apiTestService.getEnvList(projectId);
|
||||
}
|
||||
|
||||
@GetMapping("/environment/{environmentId}")
|
||||
@Operation(summary = "接口测试-获取环境中数据源等参数")
|
||||
@RequiresPermissions(value = {
|
||||
PermissionConstants.PROJECT_API_DEFINITION_READ,
|
||||
PermissionConstants.PROJECT_API_DEFINITION_CASE_READ,
|
||||
PermissionConstants.PROJECT_API_SCENARIO_READ
|
||||
}, logical = Logical.OR)
|
||||
@CheckOwner(resourceId = "#environmentId", resourceType = "environment")
|
||||
public EnvironmentConfig getEnvironmentConfig(@PathVariable String environmentId) {
|
||||
return apiTestService.getEnvironmentConfig(environmentId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,7 +7,11 @@ import io.metersphere.plugin.api.dto.ApiPluginOptionsRequest;
|
|||
import io.metersphere.plugin.api.dto.ApiPluginSelectOption;
|
||||
import io.metersphere.plugin.api.spi.AbstractApiPlugin;
|
||||
import io.metersphere.plugin.api.spi.AbstractProtocolPlugin;
|
||||
import io.metersphere.project.dto.environment.EnvironmentConfig;
|
||||
import io.metersphere.project.dto.environment.EnvironmentDTO;
|
||||
import io.metersphere.project.dto.environment.datasource.DataSource;
|
||||
import io.metersphere.project.mapper.ExtEnvironmentMapper;
|
||||
import io.metersphere.project.service.EnvironmentService;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.dto.ProtocolDTO;
|
||||
|
@ -36,6 +40,8 @@ public class ApiTestService {
|
|||
private PluginLoadService pluginLoadService;
|
||||
@Resource
|
||||
private ExtEnvironmentMapper extEnvironmentMapper;
|
||||
@Resource
|
||||
private EnvironmentService environmentService;
|
||||
|
||||
public List<ProtocolDTO> getProtocols(String orgId) {
|
||||
List<ProtocolDTO> protocols = apiPluginService.getProtocols(orgId);
|
||||
|
@ -81,4 +87,24 @@ public class ApiTestService {
|
|||
public List<Environment> getEnvList(String projectId) {
|
||||
return extEnvironmentMapper.selectByKeyword(null, false, projectId);
|
||||
}
|
||||
|
||||
public EnvironmentConfig getEnvironmentConfig(String environmentId) {
|
||||
EnvironmentConfig environmentConfig = environmentService.getEnvironmentConfig(environmentId);
|
||||
// 数据脱敏
|
||||
EnvironmentConfig newEnvironmentConfig = new EnvironmentConfig();
|
||||
newEnvironmentConfig.setHttpConfig(environmentConfig.getHttpConfig());
|
||||
newEnvironmentConfig.setCommonVariables(environmentConfig.getCommonVariables());
|
||||
List<DataSource> dataSources = environmentConfig.getDataSources().stream().map(dataSource -> {
|
||||
DataSource newDataSource = new DataSource();
|
||||
newDataSource.setId(dataSource.getId());
|
||||
newDataSource.setDataSource(dataSource.getDataSource());
|
||||
return newDataSource;
|
||||
}).toList();
|
||||
newEnvironmentConfig.setAuthConfig(null);
|
||||
newEnvironmentConfig.setPreProcessorConfig(null);
|
||||
newEnvironmentConfig.setPostProcessorConfig(null);
|
||||
newEnvironmentConfig.setAssertionConfig(null);
|
||||
newEnvironmentConfig.setDataSources(dataSources);
|
||||
return newEnvironmentConfig;
|
||||
}
|
||||
}
|
|
@ -17,10 +17,7 @@ import io.metersphere.api.dto.response.OperationDataInfo;
|
|||
import io.metersphere.api.dto.scenario.*;
|
||||
import io.metersphere.api.job.ApiScenarioScheduleJob;
|
||||
import io.metersphere.api.mapper.*;
|
||||
import io.metersphere.api.service.ApiCommonService;
|
||||
import io.metersphere.api.service.ApiScenarioBatchOperationTestService;
|
||||
import io.metersphere.api.service.BaseFileManagementTestService;
|
||||
import io.metersphere.api.service.BaseResourcePoolTestService;
|
||||
import io.metersphere.api.service.*;
|
||||
import io.metersphere.api.service.definition.ApiDefinitionModuleService;
|
||||
import io.metersphere.api.service.definition.ApiDefinitionService;
|
||||
import io.metersphere.api.service.definition.ApiTestCaseService;
|
||||
|
@ -28,29 +25,13 @@ import io.metersphere.api.service.scenario.ApiScenarioReportService;
|
|||
import io.metersphere.api.service.scenario.ApiScenarioService;
|
||||
import io.metersphere.api.utils.ApiDataUtils;
|
||||
import io.metersphere.plugin.api.spi.AbstractMsTestElement;
|
||||
import io.metersphere.project.api.KeyValueEnableParam;
|
||||
import io.metersphere.project.api.assertion.MsResponseCodeAssertion;
|
||||
import io.metersphere.project.api.assertion.MsScriptAssertion;
|
||||
import io.metersphere.project.api.processor.MsProcessor;
|
||||
import io.metersphere.project.api.processor.SQLProcessor;
|
||||
import io.metersphere.project.domain.ProjectVersion;
|
||||
import io.metersphere.project.dto.environment.EnvironmentConfig;
|
||||
import io.metersphere.project.dto.environment.EnvironmentGroupProjectDTO;
|
||||
import io.metersphere.project.dto.environment.EnvironmentGroupRequest;
|
||||
import io.metersphere.project.dto.environment.EnvironmentRequest;
|
||||
import io.metersphere.project.dto.environment.datasource.DataSource;
|
||||
import io.metersphere.project.dto.environment.http.HttpConfig;
|
||||
import io.metersphere.project.dto.environment.http.HttpConfigPathMatchRule;
|
||||
import io.metersphere.project.dto.environment.http.SelectModule;
|
||||
import io.metersphere.project.dto.environment.processors.EnvProcessorConfig;
|
||||
import io.metersphere.project.dto.environment.processors.EnvRequestScriptProcessor;
|
||||
import io.metersphere.project.dto.environment.processors.EnvScenarioScriptProcessor;
|
||||
import io.metersphere.project.dto.environment.variables.CommonVariables;
|
||||
import io.metersphere.project.dto.filemanagement.request.FileUploadRequest;
|
||||
import io.metersphere.project.mapper.ExtBaseProjectVersionMapper;
|
||||
import io.metersphere.project.mapper.ProjectVersionMapper;
|
||||
import io.metersphere.project.service.EnvironmentGroupService;
|
||||
import io.metersphere.project.service.EnvironmentService;
|
||||
import io.metersphere.project.service.FileMetadataService;
|
||||
import io.metersphere.sdk.constants.*;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
|
@ -161,10 +142,6 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
@Resource
|
||||
private ScheduleMapper scheduleMapper;
|
||||
@Resource
|
||||
private EnvironmentService environmentService;
|
||||
@Resource
|
||||
private EnvironmentGroupService environmentGroupService;
|
||||
@Resource
|
||||
private PluginService pluginService;
|
||||
@Resource
|
||||
private ApiDefinitionMapper apiDefinitionMapper;
|
||||
|
@ -173,6 +150,8 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
@Resource
|
||||
private ApiDefinitionModuleService apiDefinitionModuleService;
|
||||
@Resource
|
||||
private BaseEnvTestService baseEnvTestService;
|
||||
@Resource
|
||||
private ApiScenarioReportService apiScenarioReportService;
|
||||
@Resource
|
||||
private ProjectVersionMapper projectVersionMapper;
|
||||
|
@ -320,7 +299,10 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
@Order(1)
|
||||
public void add() throws Exception {
|
||||
initModule();
|
||||
initEnv();
|
||||
Environment environment = baseEnvTestService.initEnv(moduleId);
|
||||
envId = environment.getId();
|
||||
EnvironmentGroup environmentGroup = baseEnvTestService.initEnvGroup(environment);
|
||||
envGroupId = environmentGroup.getId();
|
||||
initTestData();
|
||||
|
||||
// @@请求成功
|
||||
|
@ -1049,136 +1031,6 @@ public class ApiScenarioControllerTests extends BaseTest {
|
|||
moduleId = apiDefinitionModuleService.add(request, "admin");
|
||||
}
|
||||
|
||||
private void initEnv() {
|
||||
EnvironmentRequest envRequest = new EnvironmentRequest();
|
||||
envRequest.setProjectId(DEFAULT_PROJECT_ID);
|
||||
envRequest.setName("test scenario debug");
|
||||
// 添加插件的环境配置,供后续测试使用
|
||||
Map<String, Map<String, Object>> pluginConfigMap = new HashMap<>();
|
||||
pluginConfigMap.put("tcpp-sampler", new HashMap<>());
|
||||
|
||||
EnvScenarioScriptProcessor envScenarioScriptProcessor = new EnvScenarioScriptProcessor();
|
||||
envScenarioScriptProcessor.setScript("test");
|
||||
envScenarioScriptProcessor.setEnableCommonScript(false);
|
||||
envScenarioScriptProcessor.setAssociateScenarioResult(true);
|
||||
EnvScenarioScriptProcessor envScenarioScriptProcessor1 = BeanUtils.copyBean(new EnvScenarioScriptProcessor(), envScenarioScriptProcessor);
|
||||
envScenarioScriptProcessor1.setAssociateScenarioResult(false);
|
||||
SQLProcessor sqlProcessor = new SQLProcessor();
|
||||
sqlProcessor.setScript("select * from test");
|
||||
sqlProcessor.setName("select * from test");
|
||||
|
||||
EnvironmentConfig environmentConfig = new EnvironmentConfig();
|
||||
DataSource dataSource = getDataSource();
|
||||
environmentConfig.setDataSources(List.of(dataSource));
|
||||
|
||||
CommonVariables commonVariables1 = new CommonVariables();
|
||||
commonVariables1.setType(VariableTypeConstants.CONSTANT.name());
|
||||
commonVariables1.setKey("a");
|
||||
commonVariables1.setValue("c");
|
||||
CommonVariables commonVariables2 = new CommonVariables();
|
||||
commonVariables2.setType(VariableTypeConstants.CONSTANT.name());
|
||||
commonVariables2.setKey("q");
|
||||
commonVariables2.setValue("qq");
|
||||
CommonVariables commonVariables3 = new CommonVariables();
|
||||
commonVariables3.setType(VariableTypeConstants.LIST.name());
|
||||
commonVariables3.setKey("list1");
|
||||
commonVariables3.setValue("1,2,3,5");
|
||||
environmentConfig.setCommonVariables(List.of(commonVariables1, commonVariables2, commonVariables3));
|
||||
|
||||
EnvProcessorConfig preProcessorConfig = environmentConfig.getPreProcessorConfig();
|
||||
EnvProcessorConfig postProcessorConfig = environmentConfig.getPostProcessorConfig();
|
||||
List<MsProcessor> preProcessors = preProcessorConfig.getApiProcessorConfig().getScenarioProcessorConfig().getProcessors();
|
||||
preProcessors.add(envScenarioScriptProcessor);
|
||||
preProcessors.add(envScenarioScriptProcessor1);
|
||||
preProcessors.add(sqlProcessor);
|
||||
|
||||
List<MsProcessor> postProcessors = postProcessorConfig.getApiProcessorConfig().getScenarioProcessorConfig().getProcessors();
|
||||
postProcessors.add(envScenarioScriptProcessor);
|
||||
postProcessors.add(envScenarioScriptProcessor1);
|
||||
postProcessors.add(sqlProcessor);
|
||||
|
||||
EnvRequestScriptProcessor envRequestScriptProcessor = new EnvRequestScriptProcessor();
|
||||
envRequestScriptProcessor.setScript("test");
|
||||
envRequestScriptProcessor.setBeforeStepScript(true);
|
||||
envRequestScriptProcessor.setIgnoreProtocols(List.of("TCP"));
|
||||
EnvRequestScriptProcessor envRequestScriptProcessor1 = new EnvRequestScriptProcessor();
|
||||
envRequestScriptProcessor1.setScript("test1");
|
||||
envRequestScriptProcessor1.setBeforeStepScript(false);
|
||||
envRequestScriptProcessor1.setIgnoreProtocols(List.of());
|
||||
List<MsProcessor> preRequestProcessors = preProcessorConfig.getApiProcessorConfig().getRequestProcessorConfig().getProcessors();
|
||||
preRequestProcessors.add(envRequestScriptProcessor);
|
||||
preRequestProcessors.add(sqlProcessor);
|
||||
List<MsProcessor> postRequestProcessors = postProcessorConfig.getApiProcessorConfig().getRequestProcessorConfig().getProcessors();
|
||||
postRequestProcessors.add(envRequestScriptProcessor);
|
||||
postRequestProcessors.add(sqlProcessor);
|
||||
|
||||
MsResponseCodeAssertion responseCodeAssertion = new MsResponseCodeAssertion();
|
||||
responseCodeAssertion.setExpectedValue("200");
|
||||
responseCodeAssertion.setCondition(MsAssertionCondition.EMPTY.name());
|
||||
responseCodeAssertion.setName("test");
|
||||
environmentConfig.getAssertionConfig().getAssertions().add(responseCodeAssertion);
|
||||
|
||||
KeyValueEnableParam header1 = new KeyValueEnableParam();
|
||||
header1.setKey("a");
|
||||
header1.setValue("aa");
|
||||
|
||||
KeyValueEnableParam header2 = new KeyValueEnableParam();
|
||||
header2.setKey("b");
|
||||
header2.setValue("bb");
|
||||
|
||||
KeyValueEnableParam header3 = new KeyValueEnableParam();
|
||||
header3.setKey("Cookie");
|
||||
header3.setValue("a=b");
|
||||
|
||||
HttpConfig httpNoneConfig = new HttpConfig();
|
||||
httpNoneConfig.setHostname("localhost:8081");
|
||||
httpNoneConfig.setType(HttpConfig.HttpConfigMatchType.NONE.name());
|
||||
httpNoneConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
HttpConfig httpModuleConfig = new HttpConfig();
|
||||
httpModuleConfig.setHostname("localhost:8081");
|
||||
httpModuleConfig.setType(HttpConfig.HttpConfigMatchType.MODULE.name());
|
||||
SelectModule selectModule = new SelectModule();
|
||||
selectModule.setModuleId(moduleId);
|
||||
selectModule.setContainChildModule(true);
|
||||
httpModuleConfig.getModuleMatchRule().setModules(List.of(selectModule));
|
||||
httpModuleConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
HttpConfig httpPathConfig = new HttpConfig();
|
||||
httpPathConfig.setHostname("localhost:8081");
|
||||
httpPathConfig.setType(HttpConfig.HttpConfigMatchType.PATH.name());
|
||||
httpPathConfig.getPathMatchRule().setPath("/test");
|
||||
httpPathConfig.getPathMatchRule().setCondition(HttpConfigPathMatchRule.MatchRuleCondition.CONTAINS.name());
|
||||
httpPathConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
environmentConfig.setHttpConfig(List.of(httpNoneConfig, httpModuleConfig, httpPathConfig));
|
||||
|
||||
environmentConfig.setPluginConfigMap(pluginConfigMap);
|
||||
envRequest.setConfig(environmentConfig);
|
||||
Environment environment = environmentService.add(envRequest, "admin", null);
|
||||
envId = environment.getId();
|
||||
|
||||
EnvironmentGroupRequest groupRequest = new EnvironmentGroupRequest();
|
||||
groupRequest.setProjectId(DEFAULT_PROJECT_ID);
|
||||
groupRequest.setName("test scenario debug");
|
||||
EnvironmentGroupProjectDTO environmentGroupProjectDTO = new EnvironmentGroupProjectDTO();
|
||||
environmentGroupProjectDTO.setEnvironmentId(environment.getId());
|
||||
environmentGroupProjectDTO.setProjectId(DEFAULT_PROJECT_ID);
|
||||
groupRequest.setEnvGroupProject(List.of(environmentGroupProjectDTO));
|
||||
envGroupId = environmentGroupService.add(groupRequest, "admin").getId();
|
||||
}
|
||||
|
||||
private DataSource getDataSource() {
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setDataSource("test");
|
||||
dataSource.setId("dataSourceId");
|
||||
dataSource.setDriver("com.mysql.cj.jdbc.Driver");
|
||||
dataSource.setUsername("root");
|
||||
dataSource.setPassword("Password123@mysql");
|
||||
dataSource.setDbUrl("jdbc:mysql://192.168.15.41:3306/metersphere");
|
||||
return dataSource;
|
||||
}
|
||||
|
||||
@Test
|
||||
@Order(7)
|
||||
public void get() throws Exception {
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
package io.metersphere.api.controller;
|
||||
|
||||
import io.metersphere.api.dto.ApiTestPluginOptionRequest;
|
||||
import io.metersphere.api.service.BaseEnvTestService;
|
||||
import io.metersphere.api.service.BaseResourcePoolTestService;
|
||||
import io.metersphere.plugin.api.dto.ApiPluginSelectOption;
|
||||
import io.metersphere.project.api.KeyValueParam;
|
||||
import io.metersphere.project.constants.ScriptLanguageType;
|
||||
import io.metersphere.project.dto.customfunction.request.CustomFunctionRunRequest;
|
||||
import io.metersphere.project.dto.environment.EnvironmentConfig;
|
||||
import io.metersphere.sdk.constants.PermissionConstants;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
import io.metersphere.system.base.BasePluginTestService;
|
||||
import io.metersphere.system.base.BaseTest;
|
||||
import io.metersphere.system.domain.Plugin;
|
||||
|
@ -44,6 +47,8 @@ public class ApiTestControllerTests extends BaseTest {
|
|||
protected static final String CUSTOM_FUNC_RUN = "custom/func/run";
|
||||
protected static final String PLUGIN_FORM_OPTION = "plugin/form/option";
|
||||
protected static final String PLUGIN_SCRIPT = "plugin/script/{0}";
|
||||
protected static final String ENV_LIST = "env-list/{0}";
|
||||
protected static final String ENVIRONMENT = "environment/{0}";
|
||||
|
||||
@Resource
|
||||
private BaseResourcePoolTestService baseResourcePoolTestService;
|
||||
|
@ -51,6 +56,8 @@ public class ApiTestControllerTests extends BaseTest {
|
|||
private PluginService pluginService;
|
||||
@Resource
|
||||
private BasePluginTestService basePluginTestService;
|
||||
@Resource
|
||||
private BaseEnvTestService baseEnvTestService;
|
||||
@Override
|
||||
protected String getBasePath() {
|
||||
return BASE_PATH;
|
||||
|
@ -183,7 +190,22 @@ public class ApiTestControllerTests extends BaseTest {
|
|||
@Test
|
||||
public void getEnvList() throws Exception {
|
||||
// @@请求成功
|
||||
this.requestGet("/env-list/" + DEFAULT_PROJECT_ID);
|
||||
this.requestGet(ENV_LIST, DEFAULT_PROJECT_ID);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getEnvironmentConfig() throws Exception {
|
||||
Environment environment = baseEnvTestService.initEnv("111");
|
||||
MvcResult mvcResult = this.requestGetAndReturn(ENVIRONMENT, environment.getId());
|
||||
EnvironmentConfig environmentConfig = getResultData(mvcResult, EnvironmentConfig.class);
|
||||
Assertions.assertNull(environmentConfig.getAuthConfig());
|
||||
Assertions.assertNull(environmentConfig.getPreProcessorConfig());
|
||||
Assertions.assertNull(environmentConfig.getPostProcessorConfig());
|
||||
Assertions.assertNull(environmentConfig.getAssertionConfig());
|
||||
environmentConfig.getDataSources().forEach(dataSourceConfig -> {
|
||||
Assertions.assertNull(dataSourceConfig.getPassword());
|
||||
Assertions.assertNull(dataSourceConfig.getDbUrl());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,176 @@
|
|||
package io.metersphere.api.service;
|
||||
|
||||
import io.metersphere.project.api.KeyValueEnableParam;
|
||||
import io.metersphere.project.api.assertion.MsResponseCodeAssertion;
|
||||
import io.metersphere.project.api.processor.MsProcessor;
|
||||
import io.metersphere.project.api.processor.SQLProcessor;
|
||||
import io.metersphere.project.dto.environment.EnvironmentConfig;
|
||||
import io.metersphere.project.dto.environment.EnvironmentGroupProjectDTO;
|
||||
import io.metersphere.project.dto.environment.EnvironmentGroupRequest;
|
||||
import io.metersphere.project.dto.environment.EnvironmentRequest;
|
||||
import io.metersphere.project.dto.environment.datasource.DataSource;
|
||||
import io.metersphere.project.dto.environment.http.HttpConfig;
|
||||
import io.metersphere.project.dto.environment.http.HttpConfigPathMatchRule;
|
||||
import io.metersphere.project.dto.environment.http.SelectModule;
|
||||
import io.metersphere.project.dto.environment.processors.EnvProcessorConfig;
|
||||
import io.metersphere.project.dto.environment.processors.EnvRequestScriptProcessor;
|
||||
import io.metersphere.project.dto.environment.processors.EnvScenarioScriptProcessor;
|
||||
import io.metersphere.project.dto.environment.variables.CommonVariables;
|
||||
import io.metersphere.project.service.EnvironmentGroupService;
|
||||
import io.metersphere.project.service.EnvironmentService;
|
||||
import io.metersphere.sdk.constants.MsAssertionCondition;
|
||||
import io.metersphere.sdk.constants.VariableTypeConstants;
|
||||
import io.metersphere.sdk.domain.Environment;
|
||||
import io.metersphere.sdk.domain.EnvironmentGroup;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.system.base.BaseTest;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @Author: jianxing
|
||||
* @CreateTime: 2023-10-20 11:32
|
||||
*/
|
||||
@Service
|
||||
public class BaseEnvTestService {
|
||||
@Resource
|
||||
private EnvironmentService environmentService;
|
||||
@Resource
|
||||
private EnvironmentGroupService environmentGroupService;
|
||||
|
||||
public Environment initEnv(String moduleId) {
|
||||
EnvironmentRequest envRequest = new EnvironmentRequest();
|
||||
envRequest.setProjectId(BaseTest.DEFAULT_PROJECT_ID);
|
||||
envRequest.setName(UUID.randomUUID().toString());
|
||||
// 添加插件的环境配置,供后续测试使用
|
||||
Map<String, Map<String, Object>> pluginConfigMap = new HashMap<>();
|
||||
pluginConfigMap.put("tcpp-sampler", new HashMap<>());
|
||||
|
||||
EnvScenarioScriptProcessor envScenarioScriptProcessor = new EnvScenarioScriptProcessor();
|
||||
envScenarioScriptProcessor.setScript("test");
|
||||
envScenarioScriptProcessor.setEnableCommonScript(false);
|
||||
envScenarioScriptProcessor.setAssociateScenarioResult(true);
|
||||
EnvScenarioScriptProcessor envScenarioScriptProcessor1 = BeanUtils.copyBean(new EnvScenarioScriptProcessor(), envScenarioScriptProcessor);
|
||||
envScenarioScriptProcessor1.setAssociateScenarioResult(false);
|
||||
SQLProcessor sqlProcessor = new SQLProcessor();
|
||||
sqlProcessor.setScript("select * from test");
|
||||
sqlProcessor.setName("select * from test");
|
||||
|
||||
EnvironmentConfig environmentConfig = new EnvironmentConfig();
|
||||
DataSource dataSource = getDataSource();
|
||||
environmentConfig.setDataSources(List.of(dataSource));
|
||||
|
||||
CommonVariables commonVariables1 = new CommonVariables();
|
||||
commonVariables1.setType(VariableTypeConstants.CONSTANT.name());
|
||||
commonVariables1.setKey("a");
|
||||
commonVariables1.setValue("c");
|
||||
CommonVariables commonVariables2 = new CommonVariables();
|
||||
commonVariables2.setType(VariableTypeConstants.CONSTANT.name());
|
||||
commonVariables2.setKey("q");
|
||||
commonVariables2.setValue("qq");
|
||||
CommonVariables commonVariables3 = new CommonVariables();
|
||||
commonVariables3.setType(VariableTypeConstants.LIST.name());
|
||||
commonVariables3.setKey("list1");
|
||||
commonVariables3.setValue("1,2,3,5");
|
||||
environmentConfig.setCommonVariables(List.of(commonVariables1, commonVariables2, commonVariables3));
|
||||
|
||||
EnvProcessorConfig preProcessorConfig = environmentConfig.getPreProcessorConfig();
|
||||
EnvProcessorConfig postProcessorConfig = environmentConfig.getPostProcessorConfig();
|
||||
List<MsProcessor> preProcessors = preProcessorConfig.getApiProcessorConfig().getScenarioProcessorConfig().getProcessors();
|
||||
preProcessors.add(envScenarioScriptProcessor);
|
||||
preProcessors.add(envScenarioScriptProcessor1);
|
||||
preProcessors.add(sqlProcessor);
|
||||
|
||||
List<MsProcessor> postProcessors = postProcessorConfig.getApiProcessorConfig().getScenarioProcessorConfig().getProcessors();
|
||||
postProcessors.add(envScenarioScriptProcessor);
|
||||
postProcessors.add(envScenarioScriptProcessor1);
|
||||
postProcessors.add(sqlProcessor);
|
||||
|
||||
EnvRequestScriptProcessor envRequestScriptProcessor = new EnvRequestScriptProcessor();
|
||||
envRequestScriptProcessor.setScript("test");
|
||||
envRequestScriptProcessor.setBeforeStepScript(true);
|
||||
envRequestScriptProcessor.setIgnoreProtocols(List.of("TCP"));
|
||||
EnvRequestScriptProcessor envRequestScriptProcessor1 = new EnvRequestScriptProcessor();
|
||||
envRequestScriptProcessor1.setScript("test1");
|
||||
envRequestScriptProcessor1.setBeforeStepScript(false);
|
||||
envRequestScriptProcessor1.setIgnoreProtocols(List.of());
|
||||
List<MsProcessor> preRequestProcessors = preProcessorConfig.getApiProcessorConfig().getRequestProcessorConfig().getProcessors();
|
||||
preRequestProcessors.add(envRequestScriptProcessor);
|
||||
preRequestProcessors.add(sqlProcessor);
|
||||
List<MsProcessor> postRequestProcessors = postProcessorConfig.getApiProcessorConfig().getRequestProcessorConfig().getProcessors();
|
||||
postRequestProcessors.add(envRequestScriptProcessor);
|
||||
postRequestProcessors.add(sqlProcessor);
|
||||
|
||||
MsResponseCodeAssertion responseCodeAssertion = new MsResponseCodeAssertion();
|
||||
responseCodeAssertion.setExpectedValue("200");
|
||||
responseCodeAssertion.setCondition(MsAssertionCondition.EMPTY.name());
|
||||
responseCodeAssertion.setName("test");
|
||||
environmentConfig.getAssertionConfig().getAssertions().add(responseCodeAssertion);
|
||||
|
||||
KeyValueEnableParam header1 = new KeyValueEnableParam();
|
||||
header1.setKey("a");
|
||||
header1.setValue("aa");
|
||||
|
||||
KeyValueEnableParam header2 = new KeyValueEnableParam();
|
||||
header2.setKey("b");
|
||||
header2.setValue("bb");
|
||||
|
||||
KeyValueEnableParam header3 = new KeyValueEnableParam();
|
||||
header3.setKey("Cookie");
|
||||
header3.setValue("a=b");
|
||||
|
||||
HttpConfig httpNoneConfig = new HttpConfig();
|
||||
httpNoneConfig.setHostname("localhost:8081");
|
||||
httpNoneConfig.setType(HttpConfig.HttpConfigMatchType.NONE.name());
|
||||
httpNoneConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
HttpConfig httpModuleConfig = new HttpConfig();
|
||||
httpModuleConfig.setHostname("localhost:8081");
|
||||
httpModuleConfig.setType(HttpConfig.HttpConfigMatchType.MODULE.name());
|
||||
SelectModule selectModule = new SelectModule();
|
||||
selectModule.setModuleId(moduleId);
|
||||
selectModule.setContainChildModule(true);
|
||||
httpModuleConfig.getModuleMatchRule().setModules(List.of(selectModule));
|
||||
httpModuleConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
HttpConfig httpPathConfig = new HttpConfig();
|
||||
httpPathConfig.setHostname("localhost:8081");
|
||||
httpPathConfig.setType(HttpConfig.HttpConfigMatchType.PATH.name());
|
||||
httpPathConfig.getPathMatchRule().setPath("/test");
|
||||
httpPathConfig.getPathMatchRule().setCondition(HttpConfigPathMatchRule.MatchRuleCondition.CONTAINS.name());
|
||||
httpPathConfig.setHeaders(List.of(header1, header2, header3));
|
||||
|
||||
environmentConfig.setHttpConfig(List.of(httpNoneConfig, httpModuleConfig, httpPathConfig));
|
||||
|
||||
environmentConfig.setPluginConfigMap(pluginConfigMap);
|
||||
envRequest.setConfig(environmentConfig);
|
||||
return environmentService.add(envRequest, "admin", null);
|
||||
}
|
||||
|
||||
public EnvironmentGroup initEnvGroup(Environment environment) {
|
||||
EnvironmentGroupRequest groupRequest = new EnvironmentGroupRequest();
|
||||
groupRequest.setProjectId(BaseTest.DEFAULT_PROJECT_ID);
|
||||
groupRequest.setName(UUID.randomUUID().toString());
|
||||
EnvironmentGroupProjectDTO environmentGroupProjectDTO = new EnvironmentGroupProjectDTO();
|
||||
environmentGroupProjectDTO.setEnvironmentId(environment.getId());
|
||||
environmentGroupProjectDTO.setProjectId(BaseTest.DEFAULT_PROJECT_ID);
|
||||
groupRequest.setEnvGroupProject(List.of(environmentGroupProjectDTO));
|
||||
return environmentGroupService.add(groupRequest, "admin");
|
||||
}
|
||||
|
||||
private DataSource getDataSource() {
|
||||
DataSource dataSource = new DataSource();
|
||||
dataSource.setDataSource("test");
|
||||
dataSource.setId("dataSourceId");
|
||||
dataSource.setDriver("com.mysql.cj.jdbc.Driver");
|
||||
dataSource.setUsername("root");
|
||||
dataSource.setPassword("root");
|
||||
dataSource.setDbUrl("jdbc:mysql://192.168.15.41:3306/metersphere");
|
||||
return dataSource;
|
||||
}
|
||||
}
|
|
@ -184,12 +184,7 @@ public class EnvironmentService {
|
|||
environmentInfoDTO.setId(environment.getId());
|
||||
environmentInfoDTO.setMock(environment.getMock());
|
||||
BeanUtils.copyBean(environmentInfoDTO, environment);
|
||||
EnvironmentBlob environmentBlob = environmentBlobMapper.selectByPrimaryKey(environmentId);
|
||||
if (environmentBlob == null) {
|
||||
environmentInfoDTO.setConfig(new EnvironmentConfig());
|
||||
} else {
|
||||
environmentInfoDTO.setConfig(JSON.parseObject(new String(environmentBlob.getConfig()), EnvironmentConfig.class));
|
||||
}
|
||||
environmentInfoDTO.setConfig(getEnvironmentConfig(environmentId));
|
||||
if (BooleanUtils.isTrue(environment.getMock())) {
|
||||
SystemParameterService systemParameterService = CommonBeanFactory.getBean(SystemParameterService.class);
|
||||
if (systemParameterService != null) {
|
||||
|
@ -205,6 +200,15 @@ public class EnvironmentService {
|
|||
return environmentInfoDTO;
|
||||
}
|
||||
|
||||
public EnvironmentConfig getEnvironmentConfig(String environmentId) {
|
||||
EnvironmentBlob environmentBlob = environmentBlobMapper.selectByPrimaryKey(environmentId);
|
||||
if (environmentBlob == null) {
|
||||
return new EnvironmentConfig();
|
||||
} else {
|
||||
return JSON.parseObject(new String(environmentBlob.getConfig()), EnvironmentConfig.class);
|
||||
}
|
||||
}
|
||||
|
||||
public Long getNextOrder(String projectId) {
|
||||
Long pos = extEnvironmentMapper.getPos(projectId);
|
||||
return (pos == null ? 0 : pos) + ORDER_STEP;
|
||||
|
|
Loading…
Reference in New Issue