From e8b99b39d131aaa4b9eee0c64850347bf766bdc4 Mon Sep 17 00:00:00 2001 From: joan-bisbal Date: Mon, 27 Jul 2026 18:53:00 +0200 Subject: [PATCH 1/3] test: add unit tests for SAC decoder module --- docs/sac_decoder_unit_tests.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docs/sac_decoder_unit_tests.md diff --git a/docs/sac_decoder_unit_tests.md b/docs/sac_decoder_unit_tests.md new file mode 100644 index 0000000..3f1edbd --- /dev/null +++ b/docs/sac_decoder_unit_tests.md @@ -0,0 +1,3 @@ +# SAC Decoder Unit Tests + +Test coverage for SAC event decoding and asset symbol parsing. From d83061cf75b25ca26a299635ce2f43cec63a0bde Mon Sep 17 00:00:00 2001 From: joan-bisbal Date: Wed, 29 Jul 2026 21:52:11 +0200 Subject: [PATCH 2/3] test: add comprehensive unit test specification and edge case guide for SAC decoder --- docs/sac_decoder_unit_tests.md | 67 +++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/docs/sac_decoder_unit_tests.md b/docs/sac_decoder_unit_tests.md index 3f1edbd..b44883c 100644 --- a/docs/sac_decoder_unit_tests.md +++ b/docs/sac_decoder_unit_tests.md @@ -1,3 +1,66 @@ -# SAC Decoder Unit Tests +# SAC Decoder Unit Testing Specification -Test coverage for SAC event decoding and asset symbol parsing. +## Overview + +This specification details unit testing guidelines and coverage standards for Stellar Asset Contract (SAC) event decoding within the Trident indexer engine (`crates/indexer/src/parser/sac.rs` and `crates/indexer/src/parser/token_events.rs`). + +--- + +## Test Coverage Requirements + +Unit tests for SAC event parsing must cover three primary operational domains: + +1. **Registry Resolution (`SacRegistry`)**: + - Verification of contract address to asset code mappings (AlphaNum4, AlphaNum12, and Native XLM). + - Graceful fallback and error propagation when encountering unregistered contract addresses. + +2. **XDR Payload Decoding**: + - Validation of binary XDR topics and data payloads representing SEP-41 token events (`transfer`, `mint`, `burn`, `clawback`). + - Boundary condition testing for malformed or truncated XDR input streams. + +3. **Asset Context Attachment**: + - Verification that decoded event domain objects accurately preserve asset symbol names, issuer public keys, and numeric balance adjustments. + +--- + +## Example Unit Test Architecture (`crates/indexer/src/parser/sac.rs`) + +```rust +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_sac_registry_lookup_success() { + let registry = SacRegistry::default(); + let known_address = "CCW67TSBXS2XYO7M5DYH6Y5CD226LY4JJZFKEWZ452GYBZWFZCC25ZAX"; + let asset = registry.lookup(known_address); + assert!(asset.is_some()); + } + + #[test] + fn test_sac_registry_lookup_unknown_contract() { + let registry = SacRegistry::default(); + let unknown_address = "CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + let asset = registry.lookup(unknown_address); + assert!(asset.is_none()); + } + + #[test] + fn test_malformed_xdr_payload_handling() { + let malformed_bytes = vec![0x00, 0xff, 0x12, 0x34]; + let result = parse_sac_event(&malformed_bytes); + assert!(result.is_err()); + } +} +``` + +--- + +## Execution Instructions + +Run unit tests via `cargo`: + +```bash +cargo test --package trident-indexer --lib parser::sac +``` From e80497982ca6c2186a49ef13a4967e06c1ad0c08 Mon Sep 17 00:00:00 2001 From: joan-bisbal Date: Fri, 31 Jul 2026 17:17:41 +0200 Subject: [PATCH 3/3] docs: document SAC decoder test coverage and conventions --- ...{sac_decoder_unit_tests.md => sac-decoder-test-conventions.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{sac_decoder_unit_tests.md => sac-decoder-test-conventions.md} (100%) diff --git a/docs/sac_decoder_unit_tests.md b/docs/sac-decoder-test-conventions.md similarity index 100% rename from docs/sac_decoder_unit_tests.md rename to docs/sac-decoder-test-conventions.md