diff --git a/src/main/java/com/apiflows/model/Step.java b/src/main/java/com/apiflows/model/Step.java index 7081e82..0c6fa71 100644 --- a/src/main/java/com/apiflows/model/Step.java +++ b/src/main/java/com/apiflows/model/Step.java @@ -100,6 +100,10 @@ public void setParameters(List parameters) { this.parameters = parameters; } + public void addParameter(Parameter parameter) { + this.parameters.add(parameter); + } + @JsonProperty("successCriteria") public List getSuccessCriteria() { return successCriteria; diff --git a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java index cc9cc7e..a97bfab 100644 --- a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java +++ b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java @@ -165,6 +165,13 @@ List validateStep(Step step, String workflowId ) { if(step.getParameters() != null) { for(Parameter parameter : step.getParameters()) { errors.addAll(validateParameter(parameter, workflowId)); + + if(step.getWorkflowId() != null) { + // when the step in context specifies a workflowId the parameter IN must be defined + if(parameter.getIn() == null) { + errors.add("'Workflow[" + workflowId + "]' parameter IN must be defined"); + } + } } } @@ -209,13 +216,6 @@ List validateParameter(Parameter parameter, String workflowId ) { if(name == null) { errors.add("'Workflow[" + workflowId + "]' parameter has no name"); } - if(parameter.getIn() == null) { - if(name != null) { - errors.add("Parameter '" + name + "' has no type"); - } else { - errors.add("'Workflow[" + workflowId + "]' parameter has no type"); - } - } if(parameter.getIn() != null) { if(!SUPPORTED_VALUES.contains(parameter.getIn())) { if(name != null) { diff --git a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java index b3c4b15..fbab84d 100644 --- a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java +++ b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java @@ -184,6 +184,22 @@ void validateStepDependsOnSelf() { assertEquals(1, validator.validateStep(step, WORKFLOW_ID).size()); } + @Test + void validateStepWithoutInAttribute() { + Step step = new Step() + .stepId("step-one") + .description("First step in the workflow") + .workflowId("workflow-id-2"); + step.addParameter(new Parameter() + .name("param") + .value("value")); + + String worklowId = "q1"; + + assertEquals(1, validator.validateStep(step, worklowId).size()); + } + + @Test void validateParameter() { Parameter parameter = new Parameter()