diff --git a/crates/core/tedge_api/src/workflow/script.rs b/crates/core/tedge_api/src/workflow/script.rs index 57367489fc..4738522c44 100644 --- a/crates/core/tedge_api/src/workflow/script.rs +++ b/crates/core/tedge_api/src/workflow/script.rs @@ -1,4 +1,3 @@ -use super::WorkflowDefinitionError; use crate::workflow::GenericStateUpdate; use crate::workflow::ScriptDefinitionError; use serde::de::Error; diff --git a/crates/core/tedge_api/src/workflow/toml_config.rs b/crates/core/tedge_api/src/workflow/toml_config.rs index aea3fba968..f2510a5105 100644 --- a/crates/core/tedge_api/src/workflow/toml_config.rs +++ b/crates/core/tedge_api/src/workflow/toml_config.rs @@ -629,7 +629,7 @@ action = "proceed" on_success = "apply_operation" [apply_operation] -iterate = "{.payload.target}" +iterate = "${.payload.target}" on_next = "next_operation" on_success = "successful" on_error = "failed" @@ -656,7 +656,7 @@ action = "cleanup" on_error, }, ) => { - assert_eq!(target, "{.payload.target}"); + assert_eq!(target, ".payload.target"); assert_eq!(on_next, &"next_operation".into()); assert_eq!(on_success, &"successful".into()); assert_eq!(on_error, &Some("failed".into())); @@ -694,4 +694,20 @@ on_error = "failed" let res = OperationWorkflow::try_from(input); assert_matches!(res, Err(WorkflowDefinitionError::MissingState { state }) if state == *"on_success"); } + + #[test] + fn iterate_parse_fails_with_invalid_json_path() { + let file = r#" +operation = "custom_operation" + +[apply_operation] +iterate = "{invalid.json.path}" +on_next = "next_operation" +on_success = "successful" +on_error = "failed" +"#; + let input: TomlOperationWorkflow = toml::from_str(file).unwrap(); + let res = OperationWorkflow::try_from(input); + assert_matches!(res, Err(WorkflowDefinitionError::InvalidPathExpression(_))); + } }