diff --git a/packages/money-account-balance-service/CHANGELOG.md b/packages/money-account-balance-service/CHANGELOG.md index affce60ad5e..287731a9cb1 100644 --- a/packages/money-account-balance-service/CHANGELOG.md +++ b/packages/money-account-balance-service/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Stop including balance amounts in `MoneyAccountBalanceValidationError` messages, which are reported via the messenger's `captureException` ([#10619](https://github.com/MetaMask/core/pull/10619)) + ## [3.1.1] ### Changed diff --git a/packages/money-account-balance-service/src/money-account-balance-service.test.ts b/packages/money-account-balance-service/src/money-account-balance-service.test.ts index 0f5685e5e42..6e233811964 100644 --- a/packages/money-account-balance-service/src/money-account-balance-service.test.ts +++ b/packages/money-account-balance-service/src/money-account-balance-service.test.ts @@ -1821,7 +1821,9 @@ describe('MoneyAccountBalanceService', () => { usedFallback: true, }); expect(captureException).toHaveBeenCalledWith( - expect.any(MoneyAccountBalanceValidationError), + new MoneyAccountBalanceValidationError( + 'Invalid balance invariant: totalBalance must equal musdBalance + vmusdValueInMusd', + ), ); }); @@ -1856,7 +1858,9 @@ describe('MoneyAccountBalanceService', () => { usedFallback: true, }); expect(captureException).toHaveBeenCalledWith( - expect.any(MoneyAccountBalanceValidationError), + new MoneyAccountBalanceValidationError( + 'Invalid musdBalance: expected a non-negative integer string', + ), ); }); diff --git a/packages/money-account-balance-service/src/money-account-balance-service.ts b/packages/money-account-balance-service/src/money-account-balance-service.ts index 4a830634db6..b4a166ba9c4 100644 --- a/packages/money-account-balance-service/src/money-account-balance-service.ts +++ b/packages/money-account-balance-service/src/money-account-balance-service.ts @@ -127,6 +127,9 @@ const NON_NEGATIVE_INTEGER_STRING_PATTERN = /^\d+$/u; * Validates that balance amounts are non-negative integer strings and that * `totalBalance === musdBalance + vmusdValueInMusd`. * + * Error messages must not include the amounts: these errors are reported to + * error monitoring, and exact balances can identify an account. + * * @param balance - Balance amounts to validate. * @throws {@link MoneyAccountBalanceValidationError} when validation fails. */ @@ -140,7 +143,7 @@ function assertValidBalanceAmounts(balance: MoneyAccountBalanceResponse): void { for (const [field, value] of entries) { if (!NON_NEGATIVE_INTEGER_STRING_PATTERN.test(value)) { throw new MoneyAccountBalanceValidationError( - `Invalid ${field}: expected a non-negative integer string, got '${value}'`, + `Invalid ${field}: expected a non-negative integer string`, ); } } @@ -150,7 +153,7 @@ function assertValidBalanceAmounts(balance: MoneyAccountBalanceResponse): void { BigInt(balance.totalBalance) ) { throw new MoneyAccountBalanceValidationError( - `Invalid balance invariant: totalBalance (${balance.totalBalance}) must equal musdBalance (${balance.musdBalance}) + vmusdValueInMusd (${balance.vmusdValueInMusd})`, + 'Invalid balance invariant: totalBalance must equal musdBalance + vmusdValueInMusd', ); } }