From 572307841349ffaa20c83e5583d009c630467e66 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Thu, 24 Nov 2022 11:14:21 +0000 Subject: [PATCH] wasm-client: add method to validate a recipient's address --- clients/webassembly/src/lib.rs | 2 ++ clients/webassembly/src/validation.rs | 35 +++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 clients/webassembly/src/validation.rs diff --git a/clients/webassembly/src/lib.rs b/clients/webassembly/src/lib.rs index 298410c245..3a97438249 100644 --- a/clients/webassembly/src/lib.rs +++ b/clients/webassembly/src/lib.rs @@ -9,6 +9,8 @@ mod client; pub mod encoded_payload_helper; #[cfg(target_arch = "wasm32")] pub mod gateway_selector; +#[cfg(target_arch = "wasm32")] +pub mod validation; #[wasm_bindgen] pub fn set_panic_hook() { diff --git a/clients/webassembly/src/validation.rs b/clients/webassembly/src/validation.rs new file mode 100644 index 0000000000..c0273f8b61 --- /dev/null +++ b/clients/webassembly/src/validation.rs @@ -0,0 +1,35 @@ +use nymsphinx::addressing::clients::Recipient; +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn validate_recipient(recipient: String) -> Result<(), JsError> { + match Recipient::try_from_base58_string(recipient) { + Ok(_) => Ok(()), + Err(e) => Err(JsError::new(format!("{}", e).as_str())), + } +} + +#[cfg(test)] +mod tests { + use super::validate_recipient; + use wasm_bindgen_test::*; + + #[wasm_bindgen_test] + fn test_recipient_validation_ok() { + let res = validate_recipient("DyQmXnst5NGGjzUZxRC5Bjs5bd7CBF3xMpsSmbRiizr2.GH6YTBP2NXU3AVqd8WjiTMVyeMjunXMEsp7gVCMEJqpD@336yuXAeGEgedRfqTJZsG2YV7P13QH1bHv1SjCZYarc9".to_string()); + assert!(res.is_ok()) + } + + #[wasm_bindgen_test] + fn test_recipient_validation_fails() { + assert!(validate_recipient(" DyQmXnst5NGGjzUZxRC5Bjs5bd7CBF3xMpsSmbRiizr2.GH6YTBP2NXU3AVqd8WjiTMVyeMjunXMEsp7gVCMEJqpD@336yuXAeGEgedRfqTJZsG2YV7P13QH1bHv1SjCZYarc9".to_string()).is_err()); + assert!(validate_recipient( + "DyQmXnst5NGGjzUZxRC5BjbRiizr2.GH6YTBP2NXU3AVqd8WD@336yuXAeGEgedRfqTJZQH1bHv1SjCZYarc9" + .to_string() + ) + .is_err()); + assert!(validate_recipient("🙀🙀🙀🙀".to_string()).is_err()); + assert!(validate_recipient("".to_string()).is_err()); + assert!(validate_recipient(" ".to_string()).is_err()); + } +}