Skip to content

Commit 6ec2c2b

Browse files
authored
Merge pull request #29 from API-Flows/validate-successaction-workflowid
Validate SuccessAction workflowId
2 parents c1b6e47 + 754af4a commit 6ec2c2b

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,13 @@ List<String> validateSuccessAction(String workflowId, String stepId, SuccessActi
273273
}
274274
}
275275

276+
if(successAction.getWorkflowId() != null && successAction.getType() != null && successAction.getType().equals("goto")) {
277+
// when type `goto` workflowId must exist (if provided)
278+
if(!workflowExists(workflowId)) {
279+
errors.add("Step " + stepId + " SuccessAction workflowId is invalid (no such a workflow exists)");
280+
}
281+
}
282+
276283
return errors;
277284
}
278285

@@ -493,6 +500,10 @@ boolean stepExists(String workflowId, String stepId) {
493500
return this.stepIds.get(workflowId) != null && this.stepIds.get(workflowId).contains(stepId);
494501
}
495502

503+
boolean workflowExists(String workflowId) {
504+
return this.workflowIds.stream().anyMatch(p -> p.contains(workflowId));
505+
}
506+
496507
List<String> validateWorkflowIdsUniqueness(List<Workflow> workflows) {
497508
List<String> errors = new ArrayList<>();
498509

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,44 @@ public void validateStepsWorkflowIdsWithoutRuntimeExpression() {
624624
assertEquals(0, new OpenAPIWorkflowValidator().validateStepsWorkflowIds(steps, multipleWorkflowsSpecFiles).size());
625625
}
626626

627+
@Test
628+
void stepExists() {
629+
OpenAPIWorkflowValidator validator = new OpenAPIWorkflowValidator();
630+
Map<String, Set<String>> stepIds = new HashMap<>();
631+
stepIds.put("w1", Set.of("step-one", "step-two", "step-three"));
632+
633+
validator.stepIds = stepIds;
634+
635+
assertTrue(validator.stepExists("w1", "step-one"));
636+
}
637+
638+
@Test
639+
void stepNotFound() {
640+
OpenAPIWorkflowValidator validator = new OpenAPIWorkflowValidator();
641+
Map<String, Set<String>> stepIds = new HashMap<>();
642+
stepIds.put("w1", Set.of("step-one", "step-two", "step-three"));
643+
644+
validator.stepIds = stepIds;
645+
646+
assertFalse(validator.stepExists("w1", "step-dummy"));
647+
}
648+
649+
@Test
650+
void workflowExists() {
651+
OpenAPIWorkflowValidator validator = new OpenAPIWorkflowValidator();
652+
validator.workflowIds.add("w1");
653+
654+
assertTrue(validator.workflowExists("w1"));
655+
}
656+
657+
@Test
658+
void workflowNotFound() {
659+
OpenAPIWorkflowValidator validator = new OpenAPIWorkflowValidator();
660+
validator.workflowIds.add("w1");
661+
662+
assertFalse(validator.workflowExists("dummy"));
663+
}
664+
627665
@Test
628666
void validWorkflowId() {
629667
assertTrue(new OpenAPIWorkflowValidator().isValidWorkflowId("idOfTheWorkflow_1"));

0 commit comments

Comments
 (0)