diff --git a/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java b/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java deleted file mode 100644 index 38442c5644..0000000000 --- a/backend/framework/sdk/src/main/java/io/metersphere/sdk/util/fake/error/FakeErrorUtils.java +++ /dev/null @@ -1,87 +0,0 @@ -package io.metersphere.sdk.util.fake.error; - -import io.metersphere.sdk.constants.ApiReportStatus; -import io.metersphere.sdk.dto.api.result.MsRegexDTO; -import io.metersphere.sdk.dto.api.result.RequestResult; -import io.metersphere.sdk.util.LogUtils; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * 误报解析类 - */ -public class FakeErrorUtils { - public static void compute(RequestResult result, List regexDTOS) { - try { - if (result != null && StringUtils.isNotBlank(result.getProjectId()) && - CollectionUtils.isNotEmpty(regexDTOS)) { - - Map> fakeErrorMap = regexDTOS.stream() - .collect(Collectors.groupingBy(MsRegexDTO::getProjectId)); - - List regexList = fakeErrorMap.get(result.getProjectId()); - //根据配置来筛选断言、获取误报编码、获取接口状态是否是误报 - List errorCodeList = new ArrayList<>(); - regexList.forEach(item -> { - if (StringUtils.isNotEmpty(item.getType())) { - switch (item.getRespType()) { - case "Response Code" -> - item.setPass(parseResponseCode(result.getResponseResult().getResponseCode(), item.getExpression(), item.getRelation())); - - case "Response Headers" -> - item.setPass(parseResponseCode(result.getResponseResult().getHeaders(), item.getExpression(), item.getRelation())); - - case "Response Data" -> - item.setPass(parseResponseCode(result.getResponseResult().getBody(), item.getExpression(), item.getRelation())); - default -> item.setPass(false); - } - } - if (BooleanUtils.isTrue(item.getPass())) { - errorCodeList.add(item.getName()); - } - }); - if (CollectionUtils.isNotEmpty(errorCodeList)) { - result.setStatus(ApiReportStatus.FAKE_ERROR.name()); - result.setFakeErrorCode(getErrorCodeStr(errorCodeList)); - } - } - } catch (Exception e) { - LogUtils.error("误报处理错误:", e); - } - } - - private static boolean parseResponseCode(String result, String regexDTO, String condition) { - return switch (condition.toUpperCase()) { - case "CONTAINS" -> result.contains(regexDTO); - - case "NOT_CONTAINS" -> notContains(result, regexDTO); - - case "EQUALS" -> StringUtils.equals(result, regexDTO); - - case "START_WITH" -> result.startsWith(regexDTO); - - case "END_WITH" -> result.endsWith(regexDTO); - - default -> false; - }; - } - - private static String getErrorCodeStr(List errorCodeList) { - if (CollectionUtils.isNotEmpty(errorCodeList)) { - String errorCodeStr = StringUtils.join(errorCodeList, ";"); - return errorCodeStr; - } else { - return StringUtils.EMPTY; - } - } - - private static boolean notContains(String result, String regexDTO) { - return !result.contains(regexDTO); - } -} \ No newline at end of file diff --git a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java index af3e42e7bf..40c5947735 100644 --- a/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java +++ b/backend/services/api-test/src/main/java/io/metersphere/api/service/ApiExecuteService.java @@ -48,12 +48,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.File; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import static io.metersphere.api.controller.result.ApiResultCode.RESOURCE_POOL_EXECUTE_ERROR; @@ -130,7 +125,9 @@ public class ApiExecuteService { setTaskFileParam(request, taskRequest); // 误报处理 - taskRequest.setMsRegexList(projectApplicationService.get(Arrays.asList(request.getProjectId()))); + if (StringUtils.isNotBlank(request.getProjectId())) { + taskRequest.setMsRegexList(projectApplicationService.get(Collections.singletonList(request.getProjectId()))); + } // todo 获取接口插件和jar包 // todo 处理公共脚本