Skip to content

Commit 40b1ac3

Browse files
authored
Enable validation of requests vs open api spec (#65)
* enable validation of requests vs open api spec * refactoring
1 parent b423588 commit 40b1ac3

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ target
66
node_modules
77
webtau.report.html
88
.vertx
9+
webtau-rest-groovy/doc-artifacts/*

webtau-open-api/src/main/java/com/twosigma/webtau/openapi/OpenApiSpecValidator.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
package com.twosigma.webtau.openapi;
1818

1919
import com.atlassian.oai.validator.SwaggerRequestResponseValidator;
20-
import com.atlassian.oai.validator.model.Request;
20+
import com.atlassian.oai.validator.model.SimpleRequest;
2121
import com.atlassian.oai.validator.model.SimpleResponse;
2222
import com.atlassian.oai.validator.report.ValidationReport;
2323
import com.twosigma.webtau.console.ConsoleOutputs;
@@ -50,15 +50,31 @@ public void validateApiSpec(HttpValidationResult result) {
5050
return;
5151
}
5252

53-
SimpleResponse response = SimpleResponse.Builder
54-
.status(result.getResponseStatusCode())
55-
.withBody(result.getResponseTextContent())
56-
.build();
53+
SimpleRequest request = buildRequest(result);
54+
SimpleResponse response = buildResponse(result);
5755

58-
Request.Method method = Enum.valueOf(Request.Method.class, result.getRequestMethod());
56+
ValidationReport validationReport = openApiValidator.validate(request, response);
57+
validationReport.getMessages().forEach(message -> result.addMismatch("API spec validation failure: " + message.toString()));
58+
}
59+
60+
private SimpleResponse buildResponse(HttpValidationResult result) {
61+
return SimpleResponse.Builder
62+
.status(result.getResponseStatusCode())
63+
.withBody(result.getResponseTextContent())
64+
.build();
65+
}
66+
67+
private SimpleRequest buildRequest(HttpValidationResult result) {
5968
String relativePath = extractPath(result.getFullUrl());
6069

61-
ValidationReport validationReport = openApiValidator.validateResponse(relativePath, method, response);
62-
validationReport.getMessages().forEach(message -> result.addMismatch("API spec validation failure: " + message.toString()));
70+
SimpleRequest.Builder builder = new SimpleRequest.Builder(result.getRequestMethod(), relativePath);
71+
if (result.getRequestContent() != null) {
72+
builder.withBody(result.getRequestContent());
73+
}
74+
if (result.getRequestHeader() != null) {
75+
result.getRequestHeader().forEachProperty(builder::withHeader);
76+
}
77+
78+
return builder.build();
6379
}
6480
}

0 commit comments

Comments
 (0)