Skip to content

feat: Add transaction authorization boundary tests - #196

Merged
El-swaggerito merged 1 commit into
Axionvera:mainfrom
AnnieIj:feat/transaction-authorization-boundary-tests
Jul 22, 2026
Merged

feat: Add transaction authorization boundary tests#196
El-swaggerito merged 1 commit into
Axionvera:mainfrom
AnnieIj:feat/transaction-authorization-boundary-tests

Conversation

@AnnieIj

@AnnieIj AnnieIj commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

This PR adds comprehensive transaction authorization boundary tests that verify the security boundaries between transaction preparation, signing, and submission operations.

Changes

Added tests/transaction-authorization.test.ts with 24 new tests covering:

Transaction Preparation (3 tests)

  • Building unsigned transactions without secret keys
  • Inspecting transaction operations without secrets
  • Converting transactions to XDR without signatures

Signing Requirements (5 tests)

  • Requiring valid secret key to sign transactions
  • Rejecting invalid secret key formats
  • Rejecting signing with mismatched secret keys
  • Producing different signatures for different transactions
  • Enforcing network passphrase during signing

Missing or Invalid Signer Scenarios (5 tests)

  • Rejecting empty secret keys
  • Rejecting incorrect secret key formats
  • Preventing read-only accounts from signing
  • Allowing signing with local accounts
  • Not exposing secret keys from LocalSigner

Unsigned Transaction Submission Prevention (4 tests)

  • Identifying unsigned transactions before submission
  • Verifying signed transactions have non-empty signatures
  • Preventing transaction modification after signing
  • Maintaining signature count through serialization

Multi-Signature Authorization Boundaries (2 tests)

  • Supporting multiple signers on a single transaction
  • Preserving signature order

Security Boundary Documentation (5 tests)

  • Documenting that wallet creation does not persist keys
  • Documenting that transaction building requires no secrets
  • Documenting that signing is the authorization gate
  • Documenting that read-only accounts cannot authorize
  • Documenting that signing accounts properly guard secrets

Test Results

  • ✅ All 24 new tests pass
  • ✅ All 455 existing tests continue to pass
  • ✅ No regressions introduced

Security Contract

These tests enforce the SDK's security contract:

  • Read operations (balance checks, transaction inspection) require no secrets
  • Transaction building requires only public keys
  • Transaction signing requires secret keys
  • Transaction submission requires properly signed transactions

This test suite documents and enforces these boundaries to prevent future refactors from accidentally allowing signing behavior in places that should only prepare or inspect transactions.

Closes #161

Add comprehensive test suite covering transaction authorization boundaries
between account data, wallet secrets, and signing operations.

Tests cover:
- Transaction preparation without signing (3 tests)
- Signing requirements and validation (5 tests)
- Missing/invalid signer scenarios (5 tests)
- Unsigned transaction submission prevention (4 tests)
- Multi-signature authorization boundaries (2 tests)
- Security boundary documentation (5 tests)

Total: 24 new tests, all passing. No regressions in existing 455 tests.

Closes Axionvera#161
@El-swaggerito
El-swaggerito merged commit 5e75ff5 into Axionvera:main Jul 22, 2026
1 check 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 SDK transaction authorisation boundary tests

2 participants