diff options
author | Florian Dold <florian@dold.me> | 2022-09-19 11:28:47 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2022-09-19 11:28:47 +0200 |
commit | cffc4347a0b3a7b6024b4d274e7225f49f75eb08 (patch) | |
tree | def9ea28a2876e9dbf4115fb68cf674b423291e8 /packages | |
parent | ba5f8ad3867adc114e3b580090767fe95b68a146 (diff) |
wallet-core: add wire method check in new coin selection
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-wallet-cli/src/integrationtests/test-wallet-balance.ts | 8 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay.ts | 14 |
2 files changed, 15 insertions, 7 deletions
diff --git a/packages/taler-wallet-cli/src/integrationtests/test-wallet-balance.ts b/packages/taler-wallet-cli/src/integrationtests/test-wallet-balance.ts index 025762e35..f5226c6c0 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-wallet-balance.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-wallet-balance.ts @@ -21,10 +21,8 @@ import { Duration, PreparePayResultType } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { CoinConfig, defaultCoinConfig } from "../harness/denomStructures.js"; import { - BankService, ExchangeService, FakebankService, - getPayto, getRandomIban, GlobalTestState, MerchantPrivateApi, @@ -32,11 +30,7 @@ import { setupDb, WalletCli, } from "../harness/harness.js"; -import { - createSimpleTestkudosEnvironment, - withdrawViaBank, - makeTestPayment, -} from "../harness/helpers.js"; +import { withdrawViaBank } from "../harness/helpers.js"; /** * Test for wallet balance error messages / different types of insufficient balance. diff --git a/packages/taler-wallet-core/src/operations/pay.ts b/packages/taler-wallet-core/src/operations/pay.ts index 52b23713d..a498ab28d 100644 --- a/packages/taler-wallet-core/src/operations/pay.ts +++ b/packages/taler-wallet-core/src/operations/pay.ts @@ -47,6 +47,7 @@ import { j2s, Logger, NotificationType, + parsePaytoUri, parsePayUri, PayCoinSelection, PreparePayResult, @@ -898,6 +899,19 @@ export async function selectCandidates( if (exchangeDetails?.currency !== req.contractTermsAmount.currency) { continue; } + let wireMethodSupported = false; + for (const acc of exchangeDetails.wireInfo.accounts) { + const pp = parsePaytoUri(acc.payto_uri); + checkLogicInvariant(!!pp); + if (pp.targetType === req.wireMethod) { + wireMethodSupported = true; + break; + } + } + if (!wireMethodSupported) { + break; + } + exchangeDetails.wireInfo.accounts; let accepted = false; for (const allowedExchange of req.exchanges) { if (allowedExchange.exchangePub === exchangeDetails.masterPublicKey) { |