From 1cb4cb5a4dbdc00cc1eea27cb062e1c774d78fde Mon Sep 17 00:00:00 2001 From: 10xwhoman Date: Fri, 26 Jun 2026 16:52:48 +0100 Subject: [PATCH 1/2] test(creator-keys): add regression test for pause blocking registration not reads Adds `test_pause_blocks_registration_not_reads` to the emergency_pause integration suite. The test verifies that: - `register_creator` reverts with `ProtocolPaused` while the protocol is paused - Read-only view functions (`is_creator_registered`, `get_creator_details`, `get_total_key_supply`) remain live while paused - Registration succeeds again after `unpause` Closes accesslayerorg/accesslayer-contracts#452 --- creator-keys/tests/emergency_pause.rs | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/creator-keys/tests/emergency_pause.rs b/creator-keys/tests/emergency_pause.rs index 187360b..6840cd9 100644 --- a/creator-keys/tests/emergency_pause.rs +++ b/creator-keys/tests/emergency_pause.rs @@ -179,3 +179,46 @@ fn test_read_only_views_work_while_paused() { let _ = client.get_protocol_state_version(); let _ = client.get_key_decimals(); } + +// --------------------------------------------------------------------------- +// Combined regression: pause blocks registration but not reads, unpause resumes (#452) +// --------------------------------------------------------------------------- + +#[test] +fn test_pause_blocks_registration_not_reads() { + let env = test_env_with_auths(); + let (client, _) = register_creator_keys(&env); + let admin = set_protocol_admin(&env, &client); + + let creator_a = register_test_creator(&env, &client, "creatora"); + + client.pause(&admin); + assert!(client.get_is_paused()); + + // Registration must revert while paused + let creator_b = Address::generate(&env); + let result = client.try_register_creator( + &creator_b, + &soroban_sdk::String::from_str(&env, "creatorb"), + &None, + &None, + ); + assert_eq!(result, Err(Ok(ContractError::ProtocolPaused))); + + // Read-only views for creator_a must succeed while paused + assert!(client.is_creator_registered(&creator_a)); + let _ = client.get_creator_details(&creator_a); + assert_eq!(client.get_total_key_supply(&creator_a), 0); + + // Unpause — creator_b registration must now succeed + client.unpause(&admin); + assert!(!client.get_is_paused()); + client + .try_register_creator( + &creator_b, + &soroban_sdk::String::from_str(&env, "creatorb"), + &None, + &None, + ) + .unwrap(); +} From 80125adfb62c796bbfce2c49840a30326ece97d8 Mon Sep 17 00:00:00 2001 From: 10xwhoman Date: Fri, 26 Jun 2026 19:00:38 +0100 Subject: [PATCH 2/2] fix(creator-keys): bind unused Result from try_register_creator to satisfy unused_must_use lint --- creator-keys/tests/emergency_pause.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/creator-keys/tests/emergency_pause.rs b/creator-keys/tests/emergency_pause.rs index 6840cd9..2aeab23 100644 --- a/creator-keys/tests/emergency_pause.rs +++ b/creator-keys/tests/emergency_pause.rs @@ -213,7 +213,7 @@ fn test_pause_blocks_registration_not_reads() { // Unpause — creator_b registration must now succeed client.unpause(&admin); assert!(!client.get_is_paused()); - client + let _ = client .try_register_creator( &creator_b, &soroban_sdk::String::from_str(&env, "creatorb"),