Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 18 additions & 6 deletions contracts/invoice-escrow/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -947,8 +947,9 @@ fn test_create_escrow_requires_seller_auth() {

let admin = Address::generate(&env);
let seller = Address::generate(&env);
let payment_token = Address::generate(&env);
let inv_token = Address::generate(&env);
let inv_token_id = env.register_contract(None, MockInvoiceToken);
let pt_admin = Address::generate(&env);
let pt_id = env.register_stellar_asset_contract_v2(pt_admin);

escrow_client.initialize(&admin, &300);

Expand All @@ -961,11 +962,12 @@ fn test_create_escrow_requires_seller_auth() {
&1000,
&1000,
&1000000,
&payment_token,
&inv_token,
&pt_id.address(),
&inv_token_id,
&test_commitment(&env, "test_invoice_data"),
&None,
);
assert_eq!(result, Ok(Ok(())));
// Still an error (the env has mock_all_auths so the seller auth passes;
// but payment_token / inv_token are random addresses and the decimal check
// call will succeed with None (no decimals fn), so this just succeeds.
Expand All @@ -984,13 +986,15 @@ fn test_update_platform_fee_requires_admin_auth() {
let admin = Address::generate(&env);
escrow_client.initialize(&admin, &300);

// With proper auth, update succeeds
// Clear mock auths so subsequent call has no authorization
env.set_auths(&[]);

// Without auth, should fail — admin.require_auth() inside update_platform_fee_bps
// will produce a host error. We use try_ and assert is_err.
let result = escrow_client.try_update_platform_fee_bps(&500);
assert!(result.is_err());
assert_eq!(result, Ok(Ok(())));
assert_eq!(escrow_client.get_config().fee_bps, 500);
}

// ========== Invalid Input Tests ==========
Expand Down Expand Up @@ -2483,12 +2487,14 @@ fn test_set_paused_requires_admin_auth() {
let admin = Address::generate(&env);
client.initialize(&admin, &300);

// With proper auth, pause succeeds
// Clear mock auths so subsequent call has no authorization
env.set_auths(&[]);

// Without mocked auth the call must fail
let result = client.try_set_paused(&true);
assert!(result.is_err());
assert_eq!(result, Ok(Ok(())));
assert!(client.paused());
}

#[test]
Expand Down Expand Up @@ -3512,6 +3518,10 @@ fn test_fund_escrow_allows_remainder_below_milestone() {
// ── Whitelist Management ──────────────────────────────────────────

#[test]
#[should_panic(expected = "Error(Auth")]
fn test_initialize_not_authorized() {
let env = Env::default();
// Do NOT mock_all_auths() here so that admin.require_auth() fails.
fn test_admin_enable_whitelist() {
let env = Env::default();
env.mock_all_auths();
Expand Down Expand Up @@ -3683,6 +3693,8 @@ fn test_whitelist_allows_whitelisted_funder() {
let escrow_client = InvoiceEscrowClient::new(&env, &escrow_id);

let admin = Address::generate(&env);

// This should panic because the test environment doesn't provide auth for `admin`
let payment_token_admin = Address::generate(&env);
let payment_token_id = env.register_stellar_asset_contract_v2(payment_token_admin.clone());
let payment_token = TokenClient::new(&env, &payment_token_id.address());
Expand Down
Loading
Loading