From bf38cee89979bf6af59dd5757c8dffc611a7fdc7 Mon Sep 17 00:00:00 2001 From: Beppe Catanese Date: Fri, 9 Feb 2024 17:28:25 +0100 Subject: [PATCH 1/2] Validate target is a valid Json Pointer --- .../com/apiflows/parser/OpenAPIWorkflowValidator.java | 5 +++++ .../com/apiflows/parser/OpenAPIWorkflowValidatorTest.java | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java index cbfb784..6d5add2 100644 --- a/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java +++ b/src/main/java/com/apiflows/parser/OpenAPIWorkflowValidator.java @@ -239,6 +239,11 @@ List validateParameter(Parameter parameter, String workflowId ) { errors.add("'Workflow[" + workflowId + "]' parameter has no value"); } } + if(parameter.getTarget() != null) { + if(!isValidJsonPointer(parameter.getTarget())) { + errors.add("Parameter '" + name + "' target is not a valid Json Pointer"); + } + } } return errors; } diff --git a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java index 4b056ac..0da6b27 100644 --- a/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java +++ b/src/test/java/com/apiflows/parser/OpenAPIWorkflowValidatorTest.java @@ -708,9 +708,9 @@ void invalidJsonPointer() { assertFalse(new OpenAPIWorkflowValidator().isValidJsonPointer("user/id")); } -// @Test -// void isValidJsonPointer2() { -// assertTrue(new OpenAPIWorkflowValidator().isValidJsonPointer("#/petId")); -// } + @Test + void invalidJsonPointerSyntax() { + assertFalse(new OpenAPIWorkflowValidator().isValidJsonPointer("#/petId")); + } } \ No newline at end of file From 35ddbc72e7e0a0998283b4f4a4299f0081a9d4c6 Mon Sep 17 00:00:00 2001 From: Beppe Catanese Date: Fri, 9 Feb 2024 17:28:32 +0100 Subject: [PATCH 2/2] Update test file --- .../apiflows/parser/OpenAPIWorkflowParserTest.java | 2 +- src/test/resources/1.0.0/pet-coupons.workflow.yaml | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/java/com/apiflows/parser/OpenAPIWorkflowParserTest.java b/src/test/java/com/apiflows/parser/OpenAPIWorkflowParserTest.java index 2be3623..742a1cf 100644 --- a/src/test/java/com/apiflows/parser/OpenAPIWorkflowParserTest.java +++ b/src/test/java/com/apiflows/parser/OpenAPIWorkflowParserTest.java @@ -14,7 +14,7 @@ void parseFromFile() { OpenAPIWorkflowParserResult result = parser.parse(WORKFLOWS_SPEC_FILE); assertNotNull(result.getOpenAPIWorkflow()); - assertEquals("1.0.0", result.getOpenAPIWorkflow().getWorkflowsSpec()); + assertEquals("1.0.0-prerelease", result.getOpenAPIWorkflow().getWorkflowsSpec()); assertNotNull(result.getOpenAPIWorkflow().getInfo()); assertEquals("Petstore - Apply Coupons", result.getOpenAPIWorkflow().getInfo().getTitle()); assertNotNull(result.getOpenAPIWorkflow().getComponents()); diff --git a/src/test/resources/1.0.0/pet-coupons.workflow.yaml b/src/test/resources/1.0.0/pet-coupons.workflow.yaml index 243a4b0..612f8fa 100644 --- a/src/test/resources/1.0.0/pet-coupons.workflow.yaml +++ b/src/test/resources/1.0.0/pet-coupons.workflow.yaml @@ -1,4 +1,4 @@ -workflowsSpec: 1.0.0 +workflowsSpec: 1.0.0-prerelease info: title: Petstore - Apply Coupons version: 1.0.0 @@ -116,22 +116,22 @@ workflows: parameters: - name: pet_id in: body - target: $request.body#/petId + target: /petId value: $inputs.pet_id - name: coupon_code in: body - target: $request.body#/couponCode + target: /couponCode value: $inputs.coupon_code - name: quantity in: body value: $inputs.quantity - name: status in: body - target: $request.body#/status + target: /status value: "placed" - name: complete in: body - target: $request.body#/complete + target: /complete value: false successCriteria: - condition: $statusCode == 200 @@ -165,4 +165,4 @@ components: format: int32 pageSize: type: integer - format: int32 \ No newline at end of file + format: int32