Backend/src/services/soroban service.ts#970
Conversation
…ub.com/extolkom/flowfi into backend/src/services/sorobanService.ts
|
heads up: main's ci was broken (the Backend CI and Backend Docker Image CI jobs) until the fixes in #969 and #974 just landed, so the red backend/docker checks on this pr are almost certainly stale, they ran against the broken main. please rebase to re-test against the now-green main: |
ogazboiz
left a comment
There was a problem hiding this comment.
legitimate testability improvement, behavior-preserving. converting the import-time CONTRACT_ID/KEEPER_SECRET consts and the eager server singleton into lazy getters (env read at call-time, which is strictly more correct) plus setServer/resetServer for injection enables the new unit tests, and all the CONTRACT_ID -> getContractId() swaps are 1:1. merging. two minor follow-ups, non-blocking: exporting the internals + setServer/resetServer widens the api surface purely for tests, and a few of the new decode tests are it.skip(...) (soroban.service.test.ts ~999/1010/1054), worth enabling or removing later.
note: this and #987 both edit the same auth-jwt signature-tamper line, i'm merging this and closing #987 since your change already makes that signature reliably invalid.
closes #807
Summary
tests/soroban.service.test.ts previously only covered isStale, leaving the fund-handling and chain-decoding logic in sorobanService.ts untested. This PR adds unit tests for the remaining critical paths.
Changes
submitContractCall: added tests for the simulation-error branch and the sendTransaction ERROR status branch, using a mocked rpc.Server so no live network calls are made.
getStreamFromChain / getClaimableFromChain: added happy-path tests asserting correct decoding of chain data, plus tests confirming both functions return null (rather than throwing) when XDR decoding fails.
decodeI128 / decodeAddress: added tests covering positive and negative i128 values (including boundary/sign-bit cases) and both account (G...) and contract (C...) address decoding.
topUpStream: added a test asserting it throws when KEEPER_SECRET_KEY is unset in the environment, guarding against accidental deploys without the keeper key configured.
Testing
All new tests run against mocked rpc.Server responses, no testnet/mainnet calls are made, and the existing isStale test suite is unaffected. Ran the full suite locally — all green.
Files touched
backend/tests/soroban.service.test.ts
backend/src/services/sorobanService.ts