Skip to content

Commit

Permalink
Merge pull request #31 from API-Flows/mark-validation-error-type
Browse files Browse the repository at this point in the history
Parameter validation: error source
  • Loading branch information
gcatanese authored Feb 9, 2024
2 parents f1a72b5 + 97dc0f5 commit cd8b7fa
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 18 deletions.
31 changes: 20 additions & 11 deletions src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ List<String> validateStep(Step step, String workflowId ) {

if(step.getParameters() != null) {
for(Parameter parameter : step.getParameters()) {
errors.addAll(validateParameter(parameter, workflowId));
errors.addAll(validateParameter(parameter, workflowId, null));

if(step.getWorkflowId() != null) {
// when the step in context specifies a workflowId the parameter IN must be defined
Expand Down Expand Up @@ -208,9 +208,18 @@ List<String> validateStep(Step step, String workflowId ) {
return errors;
}

List<String> validateParameter(Parameter parameter, String workflowId ) {
List<String> validateParameter(Parameter parameter, String workflowId, String componentName ) {
List<String> SUPPORTED_VALUES = Arrays.asList("path", "query", "header", "cookie", "body", "workflow");

String source;

if(workflowId != null) {
source = "Workflow[" + workflowId + "]";
} else {
source = "Component[" + componentName + "]";

}

List<String> errors = new ArrayList<>();

if(parameter.get$ref() != null) {
Expand All @@ -221,27 +230,27 @@ List<String> validateParameter(Parameter parameter, String workflowId ) {
String name = parameter.getName();

if(name == null) {
errors.add("'Workflow[" + workflowId + "]' parameter has no name");
errors.add(source + " parameter has no name");
}
if(parameter.getIn() != null) {
if(!SUPPORTED_VALUES.contains(parameter.getIn())) {
if(name != null) {
errors.add("Parameter '" + name + "' type (" + parameter.getIn() + ") is invalid");
errors.add(source + "parameter " + name + " type (" + parameter.getIn() + ") is invalid");
} else {
errors.add("'Workflow[" + workflowId + "]' parameter type (" + parameter.getIn() + ") is invalid");
errors.add(source + " parameter type (" + parameter.getIn() + ") is invalid");
}
}
}
if(parameter.getValue() == null) {
if(name != null) {
errors.add("Parameter '" + name + "' has no value");
errors.add(source + " parameter " + name + " has no value");
} else {
errors.add("'Workflow[" + workflowId + "]' parameter has no value");
errors.add(source + " parameter has no value");
}
}
if(parameter.getTarget() != null) {
if(!isValidJsonPointer(parameter.getTarget())) {
errors.add("Parameter '" + name + "' target is not a valid Json Pointer");
errors.add(source + " parameter " + name + " target is not a valid Json Pointer");
}
}
}
Expand Down Expand Up @@ -365,9 +374,9 @@ List<String> validateComponents(Components components) {
}
}

for (Parameter parameter : components.getParameters().values()) {
errors.addAll(validateParameter(parameter, "Components"));
}
components.getParameters().entrySet().stream()
.forEach(entry -> errors.addAll(validateParameter(entry.getValue(), null, entry.getKey())));

}
if (components.getInputs() != null) {
for(String key : components.getInputs().keySet()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ void validateParameter() {
.in("path");
String worklowId = "q1";

assertEquals(0, validator.validateParameter(parameter, worklowId).size());
assertEquals(0, validator.validateParameter(parameter, worklowId, null).size());
}

@Test
Expand All @@ -218,7 +218,7 @@ void validateParameterInvalidIn() {
.in("dummy");
String worklowId = "q1";

assertEquals(1, validator.validateParameter(parameter, worklowId).size());
assertEquals(1, validator.validateParameter(parameter, worklowId, null).size());
}

@Test
Expand All @@ -229,7 +229,7 @@ void validateParameterWithoutValue() {
.in("query");
String worklowId = "q1";

assertEquals(1, validator.validateParameter(parameter, worklowId).size());
assertEquals(1, validator.validateParameter(parameter, worklowId, null).size());
}

@Test
Expand Down Expand Up @@ -502,12 +502,12 @@ void validateComponentsParameterInvalidIn() {
.name("param")
.value("1")
.in("dummy");
String worklowId = "q1";
String componentName = "user";

Components components = new Components();
components.addParameter("param1", parameter);

assertEquals(1, validator.validateParameter(parameter, worklowId).size());
assertEquals(1, validator.validateParameter(parameter, null, componentName).size());
}

@Test
Expand All @@ -516,12 +516,12 @@ void validateComponentsParameter() {
.name("page")
.value("1")
.in("query");
String worklowId = "q1";
String componentName = "user";

Components components = new Components();
components.addParameter("page", parameter);

assertEquals(0, validator.validateParameter(parameter, worklowId).size());
assertEquals(0, validator.validateParameter(parameter, null, componentName).size());
}

@Test
Expand Down

0 comments on commit cd8b7fa

Please sign in to comment.