fix(接口测试): 修复接口导入未校验url存在
--bug=1039308 --user=王孝刚 【接口测试】新增接口定时任务-url已存在-可创建成功 https://www.tapd.cn/55049933/s/1497004
This commit is contained in:
parent
653cd227e8
commit
d1741bb3ca
|
@ -433,3 +433,5 @@ tags_size_large_than=标签数量超过{0}个
|
||||||
|
|
||||||
no_permission_to_resource=无操作资源的权限
|
no_permission_to_resource=无操作资源的权限
|
||||||
api_scenario_circular_reference_error=场景存在循环引用
|
api_scenario_circular_reference_error=场景存在循环引用
|
||||||
|
|
||||||
|
api_import_url_is_exist=导入的URL已存在
|
|
@ -440,3 +440,4 @@ tags_size_large_than=The number of tags cannot exceed 10
|
||||||
|
|
||||||
no_permission_to_resource=No permission to access the resource
|
no_permission_to_resource=No permission to access the resource
|
||||||
api_scenario_circular_reference_error=There are circular references to the scenario
|
api_scenario_circular_reference_error=There are circular references to the scenario
|
||||||
|
api_import_url_is_exist=The imported URL already exists
|
|
@ -408,3 +408,5 @@ tags_size_large_than=标签数量超过{0}个
|
||||||
|
|
||||||
no_permission_to_resource=没有权限访问该资源
|
no_permission_to_resource=没有权限访问该资源
|
||||||
api_scenario_circular_reference_error=场景存在循环引用
|
api_scenario_circular_reference_error=场景存在循环引用
|
||||||
|
|
||||||
|
api_import_url_is_exist=导入的URL已存在
|
|
@ -407,3 +407,5 @@ tags_size_large_than=標籤數量不能超過{max}
|
||||||
|
|
||||||
no_permission_to_resource=無權限訪問資源
|
no_permission_to_resource=無權限訪問資源
|
||||||
api_scenario_circular_reference_error=場景存在循環引用
|
api_scenario_circular_reference_error=場景存在循環引用
|
||||||
|
|
||||||
|
api_import_url_is_exist=导入URL已存在
|
|
@ -1,7 +1,6 @@
|
||||||
package io.metersphere.api.controller.definition;
|
package io.metersphere.api.controller.definition;
|
||||||
|
|
||||||
import io.metersphere.api.dto.definition.ApiScheduleDTO;
|
import io.metersphere.api.dto.definition.ApiScheduleDTO;
|
||||||
import io.metersphere.api.dto.definition.SwaggerUrlCheck;
|
|
||||||
import io.metersphere.api.dto.definition.request.ApiScheduleRequest;
|
import io.metersphere.api.dto.definition.request.ApiScheduleRequest;
|
||||||
import io.metersphere.api.service.definition.ApiDefinitionLogService;
|
import io.metersphere.api.service.definition.ApiDefinitionLogService;
|
||||||
import io.metersphere.api.service.definition.ApiDefinitionScheduleService;
|
import io.metersphere.api.service.definition.ApiDefinitionScheduleService;
|
||||||
|
@ -43,13 +42,6 @@ public class ApiDefinitionScheduleController {
|
||||||
return apiDefinitionScheduleService.updateSchedule(request, SessionUtils.getUserId());
|
return apiDefinitionScheduleService.updateSchedule(request, SessionUtils.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping(value = "/check")
|
|
||||||
@Operation(summary = "接口测试-接口管理-定时同步-校验url是否存在")
|
|
||||||
@RequiresPermissions(PermissionConstants.PROJECT_API_DEFINITION_IMPORT)
|
|
||||||
public Boolean checkSchedule(@RequestBody SwaggerUrlCheck swaggerUrlCheck) {
|
|
||||||
return apiDefinitionScheduleService.checkSwaggerUrl(swaggerUrlCheck.getProjectId(), swaggerUrlCheck.getSwaggerUrl());
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping(value = "/switch/{id}")
|
@GetMapping(value = "/switch/{id}")
|
||||||
@Operation(summary = "接口测试-接口管理-定时同步-开启/关闭")
|
@Operation(summary = "接口测试-接口管理-定时同步-开启/关闭")
|
||||||
@RequiresPermissions(PermissionConstants.PROJECT_API_DEFINITION_IMPORT)
|
@RequiresPermissions(PermissionConstants.PROJECT_API_DEFINITION_IMPORT)
|
||||||
|
|
|
@ -55,6 +55,7 @@ public class ApiDefinitionScheduleService {
|
||||||
BeanUtils.copyBean(apiSwagger, request);
|
BeanUtils.copyBean(apiSwagger, request);
|
||||||
apiSwagger.setId(IDGenerator.nextStr());
|
apiSwagger.setId(IDGenerator.nextStr());
|
||||||
apiSwagger.setNum(NumGenerator.nextNum(request.getProjectId(), ApplicationNumScope.API_IMPORT));
|
apiSwagger.setNum(NumGenerator.nextNum(request.getProjectId(), ApplicationNumScope.API_IMPORT));
|
||||||
|
checkSwaggerUrl(request.getProjectId(), request.getSwaggerUrl());
|
||||||
// 设置鉴权信息
|
// 设置鉴权信息
|
||||||
SwaggerBasicAuth basicAuth = new SwaggerBasicAuth();
|
SwaggerBasicAuth basicAuth = new SwaggerBasicAuth();
|
||||||
basicAuth.setUserName(request.getAuthUsername());
|
basicAuth.setUserName(request.getAuthUsername());
|
||||||
|
@ -103,11 +104,13 @@ public class ApiDefinitionScheduleService {
|
||||||
return apiDefinitionSwagger;
|
return apiDefinitionSwagger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean checkSwaggerUrl(String projectId, String url) {
|
public void checkSwaggerUrl(String projectId, String url) {
|
||||||
ApiDefinitionSwaggerExample example = new ApiDefinitionSwaggerExample();
|
ApiDefinitionSwaggerExample example = new ApiDefinitionSwaggerExample();
|
||||||
example.createCriteria().andProjectIdEqualTo(projectId).andSwaggerUrlEqualTo(url);
|
example.createCriteria().andProjectIdEqualTo(projectId).andSwaggerUrlEqualTo(url);
|
||||||
List<ApiDefinitionSwagger> apiDefinitionSwaggers = apiDefinitionSwaggerMapper.selectByExample(example);
|
List<ApiDefinitionSwagger> apiDefinitionSwaggers = apiDefinitionSwaggerMapper.selectByExample(example);
|
||||||
return CollectionUtils.isNotEmpty(apiDefinitionSwaggers);
|
if (CollectionUtils.isNotEmpty(apiDefinitionSwaggers)) {
|
||||||
|
throw new MSException(Translator.get("api_import_url_is_exist"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String updateSchedule(ApiScheduleRequest request, String userId) {
|
public String updateSchedule(ApiScheduleRequest request, String userId) {
|
||||||
|
|
|
@ -3,7 +3,6 @@ package io.metersphere.api.controller;
|
||||||
import io.metersphere.api.domain.ApiDefinitionSwagger;
|
import io.metersphere.api.domain.ApiDefinitionSwagger;
|
||||||
import io.metersphere.api.domain.ApiDefinitionSwaggerExample;
|
import io.metersphere.api.domain.ApiDefinitionSwaggerExample;
|
||||||
import io.metersphere.api.dto.definition.ApiScheduleDTO;
|
import io.metersphere.api.dto.definition.ApiScheduleDTO;
|
||||||
import io.metersphere.api.dto.definition.SwaggerUrlCheck;
|
|
||||||
import io.metersphere.api.dto.definition.request.ApiScheduleRequest;
|
import io.metersphere.api.dto.definition.request.ApiScheduleRequest;
|
||||||
import io.metersphere.api.mapper.ApiDefinitionSwaggerMapper;
|
import io.metersphere.api.mapper.ApiDefinitionSwaggerMapper;
|
||||||
import io.metersphere.api.utils.ApiDataUtils;
|
import io.metersphere.api.utils.ApiDataUtils;
|
||||||
|
@ -141,15 +140,6 @@ public class ApiDefinitionScheduleControllerTests extends BaseTest {
|
||||||
assert schedule.getEnable();
|
assert schedule.getEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Order(5)
|
|
||||||
@Test
|
|
||||||
public void checkSchedule() throws Exception {
|
|
||||||
SwaggerUrlCheck swaggerUrlCheck = new SwaggerUrlCheck();
|
|
||||||
swaggerUrlCheck.setProjectId(DEFAULT_PROJECT_ID);
|
|
||||||
swaggerUrlCheck.setSwaggerUrl("https://petstore3.swagger.io/api/v3/openapi.json");
|
|
||||||
this.requestPost(BASE_PATH + "check", swaggerUrlCheck);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Order(6)
|
@Order(6)
|
||||||
@Test
|
@Test
|
||||||
public void deleteSchedule() throws Exception {
|
public void deleteSchedule() throws Exception {
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
class="w-[243px]"
|
class="w-[243px]"
|
||||||
:max-length="255"
|
:max-length="255"
|
||||||
:placeholder="t('system.userGroup.pleaseInputUserGroupName')"
|
:placeholder="t('system.userGroup.searchHolder')"
|
||||||
allow-clear
|
allow-clear
|
||||||
@press-enter="handleBeforeOk"
|
@press-enter="handleBeforeOk"
|
||||||
@keyup.esc="handleCancel"
|
@keyup.esc="handleCancel"
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<a-input
|
<a-input
|
||||||
v-model="form.name"
|
v-model="form.name"
|
||||||
class="w-[245px]"
|
class="w-[245px]"
|
||||||
:placeholder="t('system.userGroup.pleaseInputUserGroupName')"
|
:placeholder="t('system.userGroup.searchHolder')"
|
||||||
allow-clear
|
allow-clear
|
||||||
:max-length="255"
|
:max-length="255"
|
||||||
@press-enter="handleBeforeOk(undefined)"
|
@press-enter="handleBeforeOk(undefined)"
|
||||||
|
|
Loading…
Reference in New Issue