Skip to content

Commit c1ef0fb

Browse files
committed
Fix #232 - Add Errors validation to skipMessages
Signed-off-by: Ricardo Zanini <zanini@redhat.com>
1 parent 14345dc commit c1ef0fb

File tree

2 files changed

+33
-3
lines changed

2 files changed

+33
-3
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public class WorkflowValidatorImpl implements WorkflowValidator {
4343

4444
private static final Logger logger = LoggerFactory.getLogger(WorkflowValidatorImpl.class);
4545
private boolean schemaValidationEnabled = true;
46-
private List<ValidationError> validationErrors = new ArrayList<>();
47-
private JsonNode workflowSchema = WorkflowSchemaLoader.getWorkflowSchema();
46+
private final List<ValidationError> validationErrors = new ArrayList<>();
47+
private final JsonNode workflowSchema = WorkflowSchemaLoader.getWorkflowSchema();
4848
private String source;
4949
private Workflow workflow;
5050

@@ -371,7 +371,10 @@ private boolean haveEventsDefinition(String eventName, List<EventDefinition> eve
371371
}
372372

373373
private static final Set<String> skipMessages =
374-
Set.of("$.start: string found, object expected", "$.functions: array found, object expected");
374+
Set.of(
375+
"$.start: string found, object expected",
376+
"$.functions: array found, object expected",
377+
"$.errors: array found, object expected");
375378

376379
private void addValidationError(String message, String type) {
377380
if (skipMessages.contains(message)) {

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
import static io.serverlessworkflow.api.states.DefaultState.Type.OPERATION;
1919
import static io.serverlessworkflow.api.states.DefaultState.Type.SLEEP;
2020

21+
import com.fasterxml.jackson.databind.ObjectMapper;
2122
import io.serverlessworkflow.api.Workflow;
2223
import io.serverlessworkflow.api.actions.Action;
2324
import io.serverlessworkflow.api.end.End;
25+
import io.serverlessworkflow.api.error.ErrorDefinition;
2426
import io.serverlessworkflow.api.events.EventDefinition;
2527
import io.serverlessworkflow.api.events.EventRef;
2628
import io.serverlessworkflow.api.functions.FunctionDefinition;
@@ -30,9 +32,11 @@
3032
import io.serverlessworkflow.api.retry.RetryDefinition;
3133
import io.serverlessworkflow.api.start.Start;
3234
import io.serverlessworkflow.api.states.ForEachState;
35+
import io.serverlessworkflow.api.states.InjectState;
3336
import io.serverlessworkflow.api.states.OperationState;
3437
import io.serverlessworkflow.api.states.SleepState;
3538
import io.serverlessworkflow.api.validation.ValidationError;
39+
import io.serverlessworkflow.api.workflow.Errors;
3640
import io.serverlessworkflow.api.workflow.Events;
3741
import io.serverlessworkflow.api.workflow.Functions;
3842
import io.serverlessworkflow.api.workflow.Retries;
@@ -367,4 +371,27 @@ void testActionDefForEach() {
367371
"State action 'callFn' functionRef does not reference an existing workflow function definition",
368372
validationErrors.get(0).getMessage());
369373
}
374+
375+
/**
376+
* @see <a href="https://github.com/serverlessworkflow/sdk-java/issues/232">WorkflowValidator
377+
* validate Wrokflow.tojson(workflow) failed</a>
378+
*/
379+
@Test
380+
void testErrorsArrayParsing() {
381+
final Workflow workflow =
382+
new Workflow()
383+
.withId("test-workflow")
384+
.withName("test-workflow")
385+
.withVersion("1.0")
386+
.withStart(new Start().withStateName("testingErrors"))
387+
.withErrors(new Errors(Arrays.asList(new ErrorDefinition())))
388+
.withStates(
389+
Arrays.asList(
390+
new InjectState()
391+
.withName("testingErrors")
392+
.withData(new ObjectMapper().createObjectNode().put("name", "Skywalker"))
393+
.withEnd(new End())));
394+
Assertions.assertTrue(
395+
new WorkflowValidatorImpl().setSource(Workflow.toJson(workflow)).isValid());
396+
}
370397
}

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