diff --git a/openapi-validation-core/src/main/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusions.java b/openapi-validation-core/src/main/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusions.java index 868d6546..bae8474d 100644 --- a/openapi-validation-core/src/main/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusions.java +++ b/openapi-validation-core/src/main/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusions.java @@ -13,9 +13,9 @@ public class InternalViolationExclusions { public boolean isExcluded(OpenApiViolation violation) { return falsePositive404(violation) - || falsePositive400(violation) || falsePositive405(violation) || falsePositive406(violation) + || falsePositiveRequestWith4xxResponse(violation) || customViolationExclusions.isExcluded(violation) || oneOfMatchesMoreThanOneSchema(violation); } @@ -40,8 +40,10 @@ private boolean falsePositive404(OpenApiViolation violation) { ); } - private boolean falsePositive400(OpenApiViolation violation) { - return violation.getDirection() == Direction.REQUEST && violation.getResponseStatus().orElse(0) == 400; + private boolean falsePositiveRequestWith4xxResponse(OpenApiViolation violation) { + return violation.getDirection() == Direction.REQUEST + && violation.getResponseStatus().orElse(0) >= 400 + && violation.getResponseStatus().orElse(0) < 500; } private boolean falsePositive405(OpenApiViolation violation) { diff --git a/openapi-validation-core/src/test/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusionsTest.java b/openapi-validation-core/src/test/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusionsTest.java index 48c5253d..f08cbceb 100644 --- a/openapi-validation-core/src/test/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusionsTest.java +++ b/openapi-validation-core/src/test/java/com/getyourguide/openapi/validation/core/exclusions/InternalViolationExclusionsTest.java @@ -116,14 +116,16 @@ public void whenRequestWithApiPathNotSpecifiedThenViolationExcluded() { } @Test - public void whenRequestViolationsAnd400ThenViolationExcluded() { + public void whenRequestViolationsAnd4xxThenViolationExcluded() { when(customViolationExclusions.isExcluded(any())).thenReturn(false); - checkViolationExcluded(OpenApiViolation.builder() - .direction(Direction.REQUEST) - .responseStatus(400) - .message("") - .build()); + for (int responseStatus = 400; responseStatus < 500; responseStatus++) { + checkViolationExcluded(OpenApiViolation.builder() + .direction(Direction.REQUEST) + .responseStatus(responseStatus) + .message("") + .build()); + } } @Test