diff --git a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java index cc9cc7e..c22c3c8 100644 --- a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java +++ b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java @@ -311,6 +311,10 @@ List validateCriterion(Criterion criterion, String stepId) { errors.add("Step " + stepId + " SuccessCriteria type (" + criterion.getType() + ") is invalid"); } + if (criterion.getType() != null && criterion.getContext() == null) { + errors.add("Step " + stepId + " SuccessCriteria type is specified but context is not provided"); + } + return errors; } diff --git a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java index b3c4b15..0169ecd 100644 --- a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java +++ b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java @@ -281,7 +281,8 @@ void validateCriterion() { Criterion criterion = new Criterion() .condition("$statusCode == 200") - .type("simple"); + .type("simple") + .context("$response.body"); assertEquals(0, validator.validateCriterion(criterion, stepId).size()); } @@ -301,7 +302,20 @@ void validateCriterionInvalidType() { Criterion criterion = new Criterion() .condition("$statusCode == 200") - .type("dummy"); + .type("dummy") + .context("$response.body"); + + assertEquals(1, validator.validateCriterion(criterion, stepId).size()); + } + + @Test + void validateCriterionMissingContext() { + String stepId = "step-one"; + + Criterion criterion = new Criterion() + .condition("$statusCode == 200") + .type("simple") + .context(null); assertEquals(1, validator.validateCriterion(criterion, stepId).size()); }