From 7f77ab8e5645f0c132faf7069dc5b21191ae94b4 Mon Sep 17 00:00:00 2001 From: Alexey Proshutinskiy Date: Sat, 2 Dec 2023 15:54:36 +0530 Subject: [PATCH 1/2] fix(spells): allow empty args for callbackSrv --- crates/nox-tests/tests/spells.rs | 7 +++++-- sorcerer/src/spell_builtins.rs | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/crates/nox-tests/tests/spells.rs b/crates/nox-tests/tests/spells.rs index 9336a700a6..a2791d238d 100644 --- a/crates/nox-tests/tests/spells.rs +++ b/crates/nox-tests/tests/spells.rs @@ -304,8 +304,11 @@ async fn spell_return_test() { (call %init_peer_id% ("callbackSrv" "response") [obj]) (seq (seq - (call %init_peer_id% (spell_id "get_string") ["key"] value_raw) - (call %init_peer_id% ("json" "parse") [value_raw.$.str] value) + (seq + (call %init_peer_id% (spell_id "get_string") ["key"] value_raw) + (call %init_peer_id% ("json" "parse") [value_raw.$.str] value) + ) + (call %init_peer_id% ("callbackSrv" "response") []) ) (call "{}" ("return" "") [value]) ) diff --git a/sorcerer/src/spell_builtins.rs b/sorcerer/src/spell_builtins.rs index cf19025e63..82333badda 100644 --- a/sorcerer/src/spell_builtins.rs +++ b/sorcerer/src/spell_builtins.rs @@ -362,13 +362,18 @@ pub(crate) fn store_response( spell_service_api: SpellServiceApi, ) -> Result<(), JError> { let spell_id = parse_spell_id_from(¶ms)?; - let response: JValue = Args::next("spell_id", &mut args.function_args.into_iter())?; - let call_params = CallParams::from(spell_id.clone(), params); - spell_service_api - .update_kv(call_params, response.clone()) - .map_err(|err| { - JError::new(format!( - "Failed to store response {response} for spell {spell_id}: {err}" - )) - }) + let response: Option = Args::next_opt("response", &mut args.function_args.into_iter())?; + + if let Some(response) = response { + let call_params = CallParams::from(spell_id.clone(), params); + spell_service_api + .update_kv(call_params, response.clone()) + .map_err(|err| { + JError::new(format!( + "Failed to store response {response} for spell {spell_id}: {err}" + )) + }) + } else { + Ok(()) + } } From 654cd08614f89586d23b7e3f95373f641acf357b Mon Sep 17 00:00:00 2001 From: Alexey Proshutinskiy Date: Wed, 13 Dec 2023 11:23:10 +0200 Subject: [PATCH 2/2] pr fix --- crates/nox-tests/tests/spells.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/nox-tests/tests/spells.rs b/crates/nox-tests/tests/spells.rs index a2791d238d..0f985a2db6 100644 --- a/crates/nox-tests/tests/spells.rs +++ b/crates/nox-tests/tests/spells.rs @@ -308,13 +308,16 @@ async fn spell_return_test() { (call %init_peer_id% (spell_id "get_string") ["key"] value_raw) (call %init_peer_id% ("json" "parse") [value_raw.$.str] value) ) - (call %init_peer_id% ("callbackSrv" "response") []) + (xor + (call %init_peer_id% ("callbackSrv" "response") []) + (call "{}" ("return" "") ["callbackSrv response failed"]) + ) ) (call "{}" ("return" "") [value]) ) ) )"#, - client.peer_id + client.peer_id, client.peer_id, ); let config = make_clock_config(1, 1, 0);