From 4793582aaa35b46fa1527d0acefc6f36bc995c4d Mon Sep 17 00:00:00 2001 From: eliterdav09-creator <236034507+eliterdav09-creator@users.noreply.github.com> Date: Tue, 2 Jun 2026 18:58:34 +0700 Subject: [PATCH] test: cover invalid balance lookups --- creator-keys/tests/invalid_balance_lookup.rs | 50 ++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 creator-keys/tests/invalid_balance_lookup.rs diff --git a/creator-keys/tests/invalid_balance_lookup.rs b/creator-keys/tests/invalid_balance_lookup.rs new file mode 100644 index 0000000..e8368e3 --- /dev/null +++ b/creator-keys/tests/invalid_balance_lookup.rs @@ -0,0 +1,50 @@ +//! Read-method coverage for invalid creator/holder balance lookups. +//! +//! Sparse balance entries are expected to behave predictably: unseen creators or +//! holders should return zero rather than panicking or surfacing storage errors. + +mod contract_test_env; + +use contract_test_env::{register_creator_keys, set_key_price_for_tests, test_env_with_auths}; +use soroban_sdk::{testutils::Address as _, Address, String}; + +#[test] +fn get_key_balance_returns_zero_for_unregistered_creator() { + let env = test_env_with_auths(); + let (client, _id) = register_creator_keys(&env); + + let missing_creator = Address::generate(&env); + let holder = Address::generate(&env); + + assert_eq!(client.get_key_balance(&missing_creator, &holder), 0); +} + +#[test] +fn get_key_balance_returns_zero_for_holder_without_keys() { + let env = test_env_with_auths(); + let (client, _id) = register_creator_keys(&env); + + let creator = Address::generate(&env); + client.register_creator(&creator, &String::from_str(&env, "creator")); + + let holder_without_keys = Address::generate(&env); + + assert_eq!(client.get_key_balance(&creator, &holder_without_keys), 0); +} + +#[test] +fn get_key_balance_does_not_leak_other_holder_balance() { + let env = test_env_with_auths(); + let (client, _id) = register_creator_keys(&env); + let _admin = set_key_price_for_tests(&env, &client, 100); + + let creator = Address::generate(&env); + client.register_creator(&creator, &String::from_str(&env, "creator")); + + let buyer = Address::generate(&env); + let other_holder = Address::generate(&env); + client.buy_key(&creator, &buyer, &100i128); + + assert_eq!(client.get_key_balance(&creator, &buyer), 1); + assert_eq!(client.get_key_balance(&creator, &other_holder), 0); +}