From 97dc0f5ab83a9274f50023a2c9f18b91e2061f7f Mon Sep 17 00:00:00 2001 From: Beppe Catanese Date: Fri, 9 Feb 2024 19:45:14 +0100 Subject: [PATCH] Pass error source and add to list --- .../parser/OpenAPIWorkflowValidator.java | 31 ++++++++++++------- .../parser/OpenAPIWorkflowValidatorTest.java | 14 ++++----- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java index 6d5add2..d016a0f 100644 --- a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java +++ b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java @@ -171,7 +171,7 @@ List 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 @@ -208,9 +208,18 @@ List validateStep(Step step, String workflowId ) { return errors; } - List validateParameter(Parameter parameter, String workflowId ) { + List validateParameter(Parameter parameter, String workflowId, String componentName ) { List SUPPORTED_VALUES = Arrays.asList("path", "query", "header", "cookie", "body", "workflow"); + String source; + + if(workflowId != null) { + source = "Workflow[" + workflowId + "]"; + } else { + source = "Component[" + componentName + "]"; + + } + List errors = new ArrayList<>(); if(parameter.get$ref() != null) { @@ -221,27 +230,27 @@ List 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"); } } } @@ -365,9 +374,9 @@ List 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()) { diff --git a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java index 0da6b27..3175a86 100644 --- a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java +++ b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java @@ -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 @@ -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 @@ -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 @@ -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 @@ -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