Skip to content

Commit a14a444

Browse files
committed
Refactor: Pass in responseMetaData when validating request if available (part 2)
1 parent ad7c7df commit a14a444

File tree

5 files changed

+17
-10
lines changed

5 files changed

+17
-10
lines changed

openapi-validation-core/src/main/java/com/getyourguide/openapi/validation/core/ValidationReportHandler.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private OpenApiViolation buildOpenApiViolation(
7979
.instance(pointersInstance)
8080
.parameter(parameterName)
8181
.schema(getPointersSchema(message))
82-
.responseStatus(getResponseStatus(message))
82+
.responseStatus(getResponseStatus(response, message))
8383
.logMessage(logMessage)
8484
.message(message.getMessage())
8585
.build();
@@ -115,7 +115,14 @@ private static Optional<String> getNormalizedPath(ValidationReport.Message messa
115115
.map(apiOperation -> apiOperation.getApiPath().normalised());
116116
}
117117

118-
private static Optional<Integer> getResponseStatus(ValidationReport.Message message) {
118+
private static Optional<Integer> getResponseStatus(
119+
@Nullable ResponseMetaData response,
120+
ValidationReport.Message message
121+
) {
122+
if (response != null && response.getStatusCode() != null) {
123+
return Optional.of(response.getStatusCode());
124+
}
125+
119126
return message.getContext().flatMap(ValidationReport.MessageContext::getResponseStatus);
120127
}
121128

spring-boot-starter/spring-boot-starter-web/src/test/java/com/getyourguide/openapi/validation/filter/OpenApiValidationHttpFilterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ private void verifyNoValidation() {
156156
}
157157

158158
private void verifyNoRequestValidation() {
159-
verify(validator, never()).validateRequestObjectAsync(any(), anyString());
159+
verify(validator, never()).validateRequestObjectAsync(any(), any(), anyString());
160160
verify(validator, never()).validateRequestObject(any(), anyString());
161161
}
162162

@@ -166,7 +166,7 @@ private void verifyNoResponseValidation() {
166166
}
167167

168168
private void verifyRequestValidatedAsync(MockSetupData mockData) {
169-
verify(validator).validateRequestObjectAsync(eq(mockData.requestMetaData), eq(REQUEST_BODY));
169+
verify(validator).validateRequestObjectAsync(eq(mockData.requestMetaData), eq(mockData.responseMetaData), eq(REQUEST_BODY));
170170
}
171171

172172
private void verifyRequestValidatedSync(MockSetupData mockData) {

spring-boot-starter/spring-boot-starter-webflux-spring2.7/src/main/java/com/getyourguide/openapi/validation/filter/OpenApiValidationWebFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,5 +165,5 @@ private ValidationResult validateResponse(
165165
}
166166
}
167167

168-
private enum RunType {SYNC, ASYNC}
168+
private enum RunType { SYNC, ASYNC }
169169
}

spring-boot-starter/spring-boot-starter-webflux/src/main/java/com/getyourguide/openapi/validation/filter/OpenApiValidationWebFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,5 +165,5 @@ private ValidationResult validateResponse(
165165
}
166166
}
167167

168-
private enum RunType {SYNC, ASYNC}
168+
private enum RunType { SYNC, ASYNC }
169169
}

spring-boot-starter/spring-boot-starter-webflux/src/test/java/com/getyourguide/openapi/validation/filter/OpenApiValidationWebFilterTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public void testShouldFailOnReResponseViolationWithoutViolation() {
129129
@Test
130130
public void testShouldFailOnRequestViolationWithViolation() {
131131
var mockData = mockSetup(MockConfiguration.builder().shouldFailOnRequestViolation(true).build());
132-
when(validator.validateRequestObject(eq(mockData.requestMetaData), eq(REQUEST_BODY)))
132+
when(validator.validateRequestObject(eq(mockData.requestMetaData), any(), eq(REQUEST_BODY)))
133133
.thenReturn(ValidationResult.INVALID);
134134

135135
assertThrows(ResponseStatusException.class, () -> webFilter.filter(mockData.exchange, mockData.chain));
@@ -162,7 +162,7 @@ private void verifyNoValidation() {
162162
}
163163

164164
private void verifyNoRequestValidation() {
165-
verify(validator, never()).validateRequestObjectAsync(any(), anyString());
165+
verify(validator, never()).validateRequestObjectAsync(any(), any(), anyString());
166166
verify(validator, never()).validateRequestObject(any(), anyString());
167167
}
168168

@@ -172,11 +172,11 @@ private void verifyNoResponseValidation() {
172172
}
173173

174174
private void verifyRequestValidatedAsync(MockSetupData mockData) {
175-
verify(validator).validateRequestObjectAsync(eq(mockData.requestMetaData), eq(REQUEST_BODY));
175+
verify(validator).validateRequestObjectAsync(eq(mockData.requestMetaData), any(), eq(REQUEST_BODY));
176176
}
177177

178178
private void verifyRequestValidatedSync(MockSetupData mockData) {
179-
verify(validator).validateRequestObject(eq(mockData.requestMetaData), eq(REQUEST_BODY));
179+
verify(validator).validateRequestObject(eq(mockData.requestMetaData), any(), eq(REQUEST_BODY));
180180
}
181181

182182
private void verifyResponseValidatedAsync(MockSetupData mockData) {

0 commit comments

Comments
 (0)