Transport Layer Test Suite
Comprehensive test suite for all aspects of transaction sending via raw TLS S2S connection.
Test Coverage
1. TLS Connection Tests (tls-connection.test.ts)
Tests raw TLS S2S connection establishment:
- ✅ Receiver IP configuration (172.67.157.88)
- ✅ Receiver port configuration (443, 8443)
- ✅ SNI (Server Name Indication) handling (devmindgroup.com)
- ✅ TLS version negotiation (TLSv1.2, TLSv1.3)
- ✅ Connection reuse and lifecycle
- ✅ Error handling and timeouts
- ✅ Mutual TLS (mTLS) support
2. Message Framing Tests (message-framing.test.ts)
Tests length-prefix-4be framing:
- ✅ 4-byte big-endian length prefix framing
- ✅ Message unframing and parsing
- ✅ Multiple messages in buffer
- ✅ Edge cases (empty, large, Unicode, binary)
- ✅ ISO 20022 message framing
3. ACK/NACK Handling Tests (ack-nack-handling.test.ts)
Tests ACK/NACK response parsing:
- ✅ ACK XML parsing (various formats)
- ✅ NACK XML parsing with reasons
- ✅ Validation of parsed responses
- ✅ Error handling for malformed XML
- ✅ ISO 20022 pacs.002 format support
4. Idempotency Tests (idempotency.test.ts)
Tests exactly-once delivery guarantee:
- ✅ UETR generation and validation
- ✅ MsgId generation and validation
- ✅ Duplicate transmission prevention
- ✅ ACK/NACK matching by UETR/MsgId
- ✅ Message state transitions
- ✅ Retry idempotency
5. Certificate Verification Tests (certificate-verification.test.ts)
Tests certificate validation:
- ✅ SHA256 fingerprint verification
- ✅ Certificate chain validation
- ✅ SNI matching
- ✅ TLS version and cipher suite
- ✅ Certificate expiration checks
6. End-to-End Transmission Tests (end-to-end-transmission.test.ts)
Tests complete transaction flow:
- ✅ Connection → Message → Transmission → Response
- ✅ Message validation before transmission
- ✅ Error handling in transmission
- ✅ Session management
- ✅ Receiver configuration validation
7. Retry and Error Handling Tests (retry-error-handling.test.ts)
Tests retry logic and error recovery:
- ✅ Retry configuration
- ✅ Connection retry logic
- ✅ Timeout handling
- ✅ Error recovery
- ✅ Idempotency in retries
- ✅ Error classification
- ✅ Circuit breaker pattern
8. Session Management and Audit Tests (session-audit.test.ts)
Tests session tracking and audit logging:
- ✅ TLS session tracking
- ✅ Session lifecycle management
- ✅ Audit logging (establishment, transmission, ACK/NACK)
- ✅ Session metadata recording
- ✅ Monitoring and metrics
- ✅ Security audit trail
Running Tests
Run All Transport Tests
npm test -- tests/integration/transport
Run Specific Test Suite
npm test -- tests/integration/transport/tls-connection.test.ts
Run with Coverage
npm test -- tests/integration/transport --coverage
Run Test Runner Script
chmod +x tests/integration/transport/run-transport-tests.sh
./tests/integration/transport/run-transport-tests.sh
Test Configuration
Environment Variables
Tests use the following receiver configuration:
- IP: 172.67.157.88
- Port: 443 (primary), 8443 (alternate)
- SNI: devmindgroup.com
- SHA256 Fingerprint: b19f2a94eab4cd3b92f1e3e0dce9d5e41c8b7aa3fdbe6e2f4ac3c91a5fbb2f44
- TLS Version: TLSv1.2 minimum, TLSv1.3 preferred
- Framing: length-prefix-4be
Test Timeouts
- Connection tests: 60 seconds
- End-to-end tests: 120 seconds
- Other tests: 30-60 seconds
Test Requirements
Database
Tests require a database connection for:
- Message storage
- Delivery status tracking
- Session management
- Audit logging
Network Access
Some tests require network access to:
- Receiver endpoint (172.67.157.88:443)
- DNS resolution for SNI
Note: Tests that require actual network connectivity may be skipped or fail if the receiver is unavailable. This is expected behavior for integration tests.
Test Data
Tests use the ISO 20022 pacs.008 template from:
docs/examples/pacs008-template-a.xml
Expected Test Results
Passing Tests
- ✅ All unit tests (framing, parsing, validation)
- ✅ Configuration validation tests
- ✅ Message format tests
Conditional Tests
- ⚠️ Network-dependent tests (may fail if receiver unavailable)
- TLS connection tests
- End-to-end transmission tests
- Certificate verification tests
Skipped Tests
- Tests that require specific environment setup
- Tests that depend on external services
Troubleshooting
Connection Timeouts
If tests timeout connecting to receiver:
- Verify network connectivity to 172.67.157.88
- Check firewall rules
- Verify receiver is accepting connections on port 443
- Check DNS resolution for devmindgroup.com
Certificate Errors
If certificate verification fails:
- Verify SHA256 fingerprint matches expected value
- Check certificate expiration
- Verify SNI is correctly set
- Check CA certificate bundle if using custom CA
Database Errors
If database-related tests fail:
- Verify database is running
- Check DATABASE_URL environment variable
- Verify database schema is up to date
- Check database permissions
Next Steps
After running tests:
- Review test results and fix any failures
- Check test coverage report
- Verify all critical paths are tested
- Update tests as requirements change