From 6864e2cef148a015172abaa91676330f7473e715 Mon Sep 17 00:00:00 2001 From: Josue19-08 Date: Thu, 22 Jan 2026 21:31:01 -0600 Subject: [PATCH 1/3] feat(identity-registry): add is_verified helper function Add helper function to check if an expert's status is Verified. Returns true only for Verified status, false for Unverified or Banned. Co-Authored-By: Claude Opus 4.5 --- contracts/identity-registry-contract/src/contract.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contracts/identity-registry-contract/src/contract.rs b/contracts/identity-registry-contract/src/contract.rs index 9e82c45..2c462ae 100644 --- a/contracts/identity-registry-contract/src/contract.rs +++ b/contracts/identity-registry-contract/src/contract.rs @@ -88,3 +88,9 @@ pub fn ban_expert(env: &Env, expert: &Address) -> Result<(), RegistryError> { pub fn get_expert_status(env: &Env, expert: &Address) -> ExpertStatus { storage::get_expert_status(env, expert) } + +/// Check if an expert is verified +/// Returns true only if the expert's status is Verified +pub fn is_verified(env: &Env, expert: &Address) -> bool { + storage::get_expert_status(env, expert) == ExpertStatus::Verified +} From 1ff5bb03548a4ae04a1b9abf728b8699d4664471 Mon Sep 17 00:00:00 2001 From: Josue19-08 Date: Thu, 22 Jan 2026 21:31:06 -0600 Subject: [PATCH 2/3] feat(identity-registry): expose is_verified as public function Expose is_verified as a public contract function that can be called without authentication, allowing external contracts and frontend to check expert verification status. Co-Authored-By: Claude Opus 4.5 --- contracts/identity-registry-contract/src/lib.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contracts/identity-registry-contract/src/lib.rs b/contracts/identity-registry-contract/src/lib.rs index 0e82929..8ac00bb 100644 --- a/contracts/identity-registry-contract/src/lib.rs +++ b/contracts/identity-registry-contract/src/lib.rs @@ -41,4 +41,10 @@ impl IdentityRegistryContract { pub fn get_status(env: Env, expert: Address) -> ExpertStatus { contract::get_expert_status(&env, &expert) } + + /// Check if an expert is verified + /// Returns true only if the expert's status is Verified + pub fn is_verified(env: Env, expert: Address) -> bool { + contract::is_verified(&env, &expert) + } } From 63b96520d9cf272abba51e668bf7f1e149d72963 Mon Sep 17 00:00:00 2001 From: Josue19-08 Date: Thu, 22 Jan 2026 21:31:10 -0600 Subject: [PATCH 3/3] test(identity-registry): add test_getters for public getter functions Test is_verified and get_status functions: - Verify is_verified returns false for random/unverified addresses - Verify is_verified returns true for verified experts - Verify is_verified returns false for banned experts Co-Authored-By: Claude Opus 4.5 --- .../identity-registry-contract/src/test.rs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/contracts/identity-registry-contract/src/test.rs b/contracts/identity-registry-contract/src/test.rs index 451e808..9f2a118 100644 --- a/contracts/identity-registry-contract/src/test.rs +++ b/contracts/identity-registry-contract/src/test.rs @@ -330,3 +330,31 @@ fn test_complete_expert_lifecycle() { client.ban_expert(&expert); assert_eq!(client.get_status(&expert), ExpertStatus::Banned); } + +#[test] +fn test_getters() { + let env = Env::default(); + env.mock_all_auths(); + + let contract_id = env.register(IdentityRegistryContract, ()); + let client = IdentityRegistryContractClient::new(&env, &contract_id); + + let admin = Address::generate(&env); + client.init(&admin); + + // Test 1: Check is_verified on a random address (should be false) + let random_address = Address::generate(&env); + assert_eq!(client.is_verified(&random_address), false); + assert_eq!(client.get_status(&random_address), ExpertStatus::Unverified); + + // Test 2: Verify an expert and check is_verified (should be true) + let expert = Address::generate(&env); + client.add_expert(&expert); + assert_eq!(client.is_verified(&expert), true); + assert_eq!(client.get_status(&expert), ExpertStatus::Verified); + + // Test 3: Ban the expert and check is_verified (should be false) + client.ban_expert(&expert); + assert_eq!(client.is_verified(&expert), false); + assert_eq!(client.get_status(&expert), ExpertStatus::Banned); +}