From 2ce25cfa3843f2403e6d5d275d78fd48dc3e8655 Mon Sep 17 00:00:00 2001 From: shadrach68 Date: Sun, 31 May 2026 01:47:05 +0100 Subject: [PATCH 1/3] test: add regression test for minimum handle length --- creator-keys/tests/test_register_creator.rs | 47 +++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 creator-keys/tests/test_register_creator.rs diff --git a/creator-keys/tests/test_register_creator.rs b/creator-keys/tests/test_register_creator.rs new file mode 100644 index 0000000..2eb7458 --- /dev/null +++ b/creator-keys/tests/test_register_creator.rs @@ -0,0 +1,47 @@ +mod contract_test_env; + +use contract_test_env::{register_creator_keys, test_env_with_auths}; +use creator_keys::{ContractError, HANDLE_LEN_MIN}; +use soroban_sdk::{testutils::Address as _, Address, String}; + +#[test] +fn test_register_creator_minimum_handle_length_success() { + let env = test_env_with_auths(); + let (client, _) = register_creator_keys(&env); + let creator = Address::generate(&env); + + // Create a handle of exactly HANDLE_LEN_MIN characters + let handle_bytes = [b'a'; HANDLE_LEN_MIN as usize]; + let handle_str = core::str::from_utf8(&handle_bytes).unwrap(); + let handle = String::from_str(&env, handle_str); + + let result = client.try_register_creator(&creator, &handle); + + // Happy path: the function succeeds + assert_eq!(result, Ok(Ok(()))); + + // State assertion: after a successful call, storage and derived views match expectations + assert!(client.is_creator_registered(&creator)); + let profile = client.get_creator(&creator).unwrap(); + assert_eq!(profile.handle, handle); +} + +#[test] +fn test_register_creator_below_minimum_handle_length_fails() { + let env = test_env_with_auths(); + let (client, _) = register_creator_keys(&env); + let creator = Address::generate(&env); + + // Create a handle one character below HANDLE_LEN_MIN + let handle_bytes = [b'a'; (HANDLE_LEN_MIN - 1) as usize]; + let handle_str = core::str::from_utf8(&handle_bytes).unwrap(); + let handle = String::from_str(&env, handle_str); + + let result = client.try_register_creator(&creator, &handle); + + // Error case: expected failure + assert_eq!(result, Err(Ok(ContractError::HandleTooShort))); + + // State assertion: failed calls do not leave partial state behind + assert!(!client.is_creator_registered(&creator)); +} From 5caa987fc6959e8576cf330ff856bbf5e7e0fd96 Mon Sep 17 00:00:00 2001 From: shadrach68 Date: Sun, 31 May 2026 20:23:33 +0100 Subject: [PATCH 2/3] fix: explicitly remove unwrap from test file From f1864bcf0ccbb2662532f0f5e4501ca082c6e607 Mon Sep 17 00:00:00 2001 From: shadrach68 Date: Sun, 31 May 2026 20:29:49 +0100 Subject: [PATCH 3/3] fix: remove invalid unwrap from get_creator --- creator-keys/tests/test_register_creator.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/creator-keys/tests/test_register_creator.rs b/creator-keys/tests/test_register_creator.rs index 2eb7458..51b48e2 100644 --- a/creator-keys/tests/test_register_creator.rs +++ b/creator-keys/tests/test_register_creator.rs @@ -22,7 +22,7 @@ fn test_register_creator_minimum_handle_length_success() { // State assertion: after a successful call, storage and derived views match expectations assert!(client.is_creator_registered(&creator)); - let profile = client.get_creator(&creator).unwrap(); + let profile = client.get_creator(&creator); assert_eq!(profile.handle, handle); }