aboutsummaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-09-19 11:28:47 +0200
committerFlorian Dold <florian@dold.me>2022-09-19 11:28:47 +0200
commitcffc4347a0b3a7b6024b4d274e7225f49f75eb08 (patch)
treedef9ea28a2876e9dbf4115fb68cf674b423291e8 /packages
parentba5f8ad3867adc114e3b580090767fe95b68a146 (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.ts8
-rw-r--r--packages/taler-wallet-core/src/operations/pay.ts14
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) {