Skip to content

Commit 4939b65

Browse files
committed
Fix #357 - Add OAuth Validation Test
Signed-off-by: Ricardo Zanini <zanini@redhat.com>
1 parent 75edf41 commit 4939b65

File tree

2 files changed

+114
-51
lines changed

2 files changed

+114
-51
lines changed

validation/src/main/java/io/serverlessworkflow/validation/WorkflowValidatorImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,8 @@ private boolean isMissingRetryDefinition(String retryName, List<RetryDefinition>
399399
"$.start: string found, object expected",
400400
"$.functions: array found, object expected",
401401
"$.retries: array found, object expected",
402-
"$.errors: array found, object expected");
402+
"$.errors: array found, object expected",
403+
"$.auth: array found, object expected");
403404

404405
private void addValidationError(String message, String type) {
405406
if (skipMessages.contains(message)) {

validation/src/test/java/io/serverlessworkflow/validation/test/WorkflowValidationTest.java

Lines changed: 112 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -380,61 +380,61 @@ void testActionDefForEach() {
380380
public void testValidateRetry() {
381381
WorkflowValidator workflowValidator = new WorkflowValidatorImpl();
382382
List<ValidationError> validationErrors =
383-
workflowValidator
384-
.setSource(
385-
"{\n"
386-
+ " \"id\": \"workflow_1\",\n"
387-
+ " \"name\": \"workflow_1\",\n"
388-
+ " \"description\": \"workflow_1\",\n"
389-
+ " \"version\": \"1.0\",\n"
390-
+ " \"specVersion\": \"0.8\",\n"
391-
+ " \"start\": \"Task1\",\n"
392-
+ " \"functions\": [\n"
393-
+ " {\n"
394-
+ " \"name\": \"increment\",\n"
395-
+ " \"type\": \"custom\",\n"
396-
+ " \"operation\": \"worker\"\n"
397-
+ " }\n"
398-
+ " ],\n"
399-
+ " \"retries\": [\n"
400-
+ " {\n"
401-
+ " \"maxAttempts\": 3\n"
402-
+ " },\n"
403-
+ " {\n"
404-
+ " \"name\": \"testRetry\" \n"
405-
+ " }\n"
406-
+ " ],\n"
407-
+ " \"states\": [\n"
408-
+ " {\n"
409-
+ " \"name\": \"Task1\",\n"
410-
+ " \"type\": \"operation\",\n"
411-
+ " \"actionMode\": \"sequential\",\n"
412-
+ " \"actions\": [\n"
413-
+ " {\n"
414-
+ " \"functionRef\": {\n"
415-
+ " \"refName\": \"increment\",\n"
416-
+ " \"arguments\": {\n"
417-
+ " \"input\": \"some text\"\n"
418-
+ " }\n"
419-
+ " },\n"
420-
+ " \"retryRef\": \"const\",\n"
421-
+ " \"actionDataFilter\": {\n"
422-
+ " \"toStateData\": \"${ .result }\"\n"
423-
+ " }\n"
424-
+ " }\n"
425-
+ " ],\n"
426-
+ " \"end\": true\n"
427-
+ " }\n"
428-
+ " ]\n"
429-
+ "}")
430-
.validate();
383+
workflowValidator
384+
.setSource(
385+
"{\n"
386+
+ " \"id\": \"workflow_1\",\n"
387+
+ " \"name\": \"workflow_1\",\n"
388+
+ " \"description\": \"workflow_1\",\n"
389+
+ " \"version\": \"1.0\",\n"
390+
+ " \"specVersion\": \"0.8\",\n"
391+
+ " \"start\": \"Task1\",\n"
392+
+ " \"functions\": [\n"
393+
+ " {\n"
394+
+ " \"name\": \"increment\",\n"
395+
+ " \"type\": \"custom\",\n"
396+
+ " \"operation\": \"worker\"\n"
397+
+ " }\n"
398+
+ " ],\n"
399+
+ " \"retries\": [\n"
400+
+ " {\n"
401+
+ " \"maxAttempts\": 3\n"
402+
+ " },\n"
403+
+ " {\n"
404+
+ " \"name\": \"testRetry\" \n"
405+
+ " }\n"
406+
+ " ],\n"
407+
+ " \"states\": [\n"
408+
+ " {\n"
409+
+ " \"name\": \"Task1\",\n"
410+
+ " \"type\": \"operation\",\n"
411+
+ " \"actionMode\": \"sequential\",\n"
412+
+ " \"actions\": [\n"
413+
+ " {\n"
414+
+ " \"functionRef\": {\n"
415+
+ " \"refName\": \"increment\",\n"
416+
+ " \"arguments\": {\n"
417+
+ " \"input\": \"some text\"\n"
418+
+ " }\n"
419+
+ " },\n"
420+
+ " \"retryRef\": \"const\",\n"
421+
+ " \"actionDataFilter\": {\n"
422+
+ " \"toStateData\": \"${ .result }\"\n"
423+
+ " }\n"
424+
+ " }\n"
425+
+ " ],\n"
426+
+ " \"end\": true\n"
427+
+ " }\n"
428+
+ " ]\n"
429+
+ "}")
430+
.validate();
431431

432432
Assertions.assertNotNull(validationErrors);
433433
Assertions.assertEquals(2, validationErrors.size());
434434
Assertions.assertEquals("Retry name should not be empty", validationErrors.get(0).getMessage());
435435
Assertions.assertEquals(
436-
"Operation State action 'null' retryRef does not reference an existing workflow retry definition",
437-
validationErrors.get(1).getMessage());
436+
"Operation State action 'null' retryRef does not reference an existing workflow retry definition",
437+
validationErrors.get(1).getMessage());
438438
}
439439

440440
/**
@@ -459,4 +459,66 @@ void testErrorsArrayParsing() {
459459
Assertions.assertTrue(
460460
new WorkflowValidatorImpl().setSource(Workflow.toJson(workflow)).isValid());
461461
}
462+
463+
/**
464+
* @see <a href="https://github.com/serverlessworkflow/sdk-java/issues/357">Error parsing Oauth
465+
* properties in cncf spec using java sdk</a>
466+
*/
467+
@Test
468+
void testOAuthPropertiesDefinition() {
469+
final Workflow workflow =
470+
Workflow.fromSource(
471+
"{\n"
472+
+ " \"version\": \"1.0.0\",\n"
473+
+ " \"id\": \"greeting-workflow\", \n"
474+
+ " \"specVersion\": \"0.8\",\n"
475+
+ " \"name\": \"greeting-workflow\",\n"
476+
+ " \"description\": \"Greet Someone\",\n"
477+
+ " \"start\": \"greet\",\n"
478+
+ " \"auth\": [\n"
479+
+ " {\n"
480+
+ " \"name\": \"serviceCloud\",\n"
481+
+ " \"scheme\": \"oauth2\",\n"
482+
+ " \"properties\": {\n"
483+
+ " \"scopes\": [\"$$$$XXXMMMMM\"],\n"
484+
+ " \"audiences\": [\"%%%XXXXXXX\"],\n"
485+
+ " \"clientId\": \"whatever\",\n"
486+
+ " \"grantType\": \"password\"\n"
487+
+ " }\n"
488+
+ " }\n"
489+
+ " ],\n"
490+
+ " \"functions\": [\n"
491+
+ " {\n"
492+
+ " \"name\": \"greeting-function\",\n"
493+
+ " \"type\": \"rest\",\n"
494+
+ " \"operation\": \"file://myapis/greetingapis.json#greeting\"\n"
495+
+ " }\n"
496+
+ " ],\n"
497+
+ " \"states\": [\n"
498+
+ " {\n"
499+
+ " \"name\": \"greet\",\n"
500+
+ " \"type\": \"operation\",\n"
501+
+ " \"actions\": [\n"
502+
+ " {\n"
503+
+ " \"name\": \"greet-action\",\n"
504+
+ " \"functionRef\": {\n"
505+
+ " \"refName\": \"greeting-function\",\n"
506+
+ " \"arguments\": {\n"
507+
+ " \"name\": \"${ .person.name }\"\n"
508+
+ " }\n"
509+
+ " },\n"
510+
+ " \"actionDataFilter\": {\n"
511+
+ " \"results\": \"${ {greeting: .greeting} }\"\n"
512+
+ " }\n"
513+
+ " }\n"
514+
+ " ],\n"
515+
+ " \"end\": true\n"
516+
+ " }\n"
517+
+ " ]\n"
518+
+ "}\n");
519+
final List<ValidationError> validationErrors =
520+
new WorkflowValidatorImpl().setWorkflow(workflow).validate();
521+
522+
Assertions.assertTrue(validationErrors.isEmpty());
523+
}
462524
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy