From 2b20d9265541567b965e191112916c512f5ad678 Mon Sep 17 00:00:00 2001 From: Beppe Catanese Date: Fri, 2 Feb 2024 19:42:49 +0100 Subject: [PATCH 1/2] Add parameter to collection --- src/main/java/com/apiflows/model/Step.java | 4 ++++ 1 file changed, 4 insertions(+) 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; From 5ac989a1a888902d3f8b377f9880e8587b9d6cfa Mon Sep 17 00:00:00 2001 From: Beppe Catanese Date: Fri, 2 Feb 2024 19:43:17 +0100 Subject: [PATCH 2/2] Enforce IN attribute when step is not in the Workflow context --- .../parser/OpenAPIWorkflowValidator.java | 14 +++++++------- .../parser/OpenAPIWorkflowValidatorTest.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) 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()