Skip to content

Commit 16e2109

Browse files
authored
Merge pull request #22 from API-Flows/verify-parameter-in
Validation of parameter IN attribute
2 parents 77dbc4e + 5ac989a commit 16e2109

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

src/main/java/com/apiflows/model/Step.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,10 @@ public void setParameters(List<Parameter> parameters) {
100100
this.parameters = parameters;
101101
}
102102

103+
public void addParameter(Parameter parameter) {
104+
this.parameters.add(parameter);
105+
}
106+
103107
@JsonProperty("successCriteria")
104108
public List<Criterion> getSuccessCriteria() {
105109
return successCriteria;

src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,13 @@ List<String> validateStep(Step step, String workflowId ) {
165165
if(step.getParameters() != null) {
166166
for(Parameter parameter : step.getParameters()) {
167167
errors.addAll(validateParameter(parameter, workflowId));
168+
169+
if(step.getWorkflowId() != null) {
170+
// when the step in context specifies a workflowId the parameter IN must be defined
171+
if(parameter.getIn() == null) {
172+
errors.add("'Workflow[" + workflowId + "]' parameter IN must be defined");
173+
}
174+
}
168175
}
169176
}
170177

@@ -209,13 +216,6 @@ List<String> validateParameter(Parameter parameter, String workflowId ) {
209216
if(name == null) {
210217
errors.add("'Workflow[" + workflowId + "]' parameter has no name");
211218
}
212-
if(parameter.getIn() == null) {
213-
if(name != null) {
214-
errors.add("Parameter '" + name + "' has no type");
215-
} else {
216-
errors.add("'Workflow[" + workflowId + "]' parameter has no type");
217-
}
218-
}
219219
if(parameter.getIn() != null) {
220220
if(!SUPPORTED_VALUES.contains(parameter.getIn())) {
221221
if(name != null) {

src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,22 @@ void validateStepDependsOnSelf() {
184184
assertEquals(1, validator.validateStep(step, WORKFLOW_ID).size());
185185
}
186186

187+
@Test
188+
void validateStepWithoutInAttribute() {
189+
Step step = new Step()
190+
.stepId("step-one")
191+
.description("First step in the workflow")
192+
.workflowId("workflow-id-2");
193+
step.addParameter(new Parameter()
194+
.name("param")
195+
.value("value"));
196+
197+
String worklowId = "q1";
198+
199+
assertEquals(1, validator.validateStep(step, worklowId).size());
200+
}
201+
202+
187203
@Test
188204
void validateParameter() {
189205
Parameter parameter = new Parameter()

0 commit comments

Comments
 (0)