Skip to content

test: assert atomic rollback on cross-contract transfer failure (#378)#399

Merged
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
Abdulmajeed82:feat/transfer-failure-atomicity-tests
May 31, 2026
Merged

test: assert atomic rollback on cross-contract transfer failure (#378)#399
thlpkee20-wq merged 2 commits into
RevoraOrg:masterfrom
Abdulmajeed82:feat/transfer-failure-atomicity-tests

Conversation

@Abdulmajeed82
Copy link
Copy Markdown
Contributor

Closes #378

…raOrg#378)

Add claim flow transfer failure tests to the cross-contract atomicity suite.

- Add FailingTransferToken mock contract: implements full Soroban token
  interface, panics when transfer is called with from==fail_from. This
  allows deposit (issuer→contract) to succeed while claim (contract→holder)
  fails, isolating the claim transfer failure path.

- Add 7 tests in src/test_claim_transfer_fail.rs:
  - claim_transfer_fail_returns_transfer_failed
  - claim_transfer_fail_does_not_advance_last_claimed_idx
  - claim_transfer_fail_holder_balance_unchanged
  - claim_transfer_fail_contract_balance_unchanged
  - claim_transfer_fail_then_retry_succeeds
  - claim_transfer_fail_multi_period_no_partial_state
  - claim_transfer_fail_does_not_affect_other_holder_state
  - claim_transfer_fail_does_not_affect_sibling_offering

Security invariant verified: LastClaimedIdx is written AFTER try_transfer
succeeds. A failed transfer leaves zero observable state change — no index
advance, no balance movement, no partial period claims.
@drips-wave
Copy link
Copy Markdown

drips-wave Bot commented May 30, 2026

@Abdulmajeed82 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@thlpkee20-wq thlpkee20-wq merged commit 15e1535 into RevoraOrg:master May 31, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add cross-contract token transfer failure handling tests asserting TransferFailed and no partial state

2 participants