diff options
Diffstat (limited to 'packages/taler-harness/src/harness/helpers.ts')
-rw-r--r-- | packages/taler-harness/src/harness/helpers.ts | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/packages/taler-harness/src/harness/helpers.ts b/packages/taler-harness/src/harness/helpers.ts index ad77ce6ca..c1ce463fa 100644 --- a/packages/taler-harness/src/harness/helpers.ts +++ b/packages/taler-harness/src/harness/helpers.ts @@ -29,6 +29,8 @@ import { MerchantContractTerms, Duration, PreparePayResultType, + NotificationType, + WithdrawalGroupFinishedNotification, } from "@gnu-taler/taler-util"; import { BankAccessApi, @@ -466,6 +468,53 @@ export async function startWithdrawViaBank( // Some tests rely on the final withdraw failing. } +export interface WithdrawViaBankResult { + withdrawalFinishedCond: Promise<WithdrawalGroupFinishedNotification>; +} + +export async function withdrawViaBankV2( + t: GlobalTestState, + p: { + walletClient: WalletClient; + bank: BankService; + exchange: ExchangeServiceInterface; + amount: AmountString; + restrictAge?: number; + }, +): Promise<WithdrawViaBankResult> { + const { walletClient: wallet, bank, exchange, amount } = p; + + const user = await BankApi.createRandomBankUser(bank); + const wop = await BankAccessApi.createWithdrawalOperation(bank, user, amount); + + // Hand it to the wallet + + await wallet.client.call(WalletApiOperation.GetWithdrawalDetailsForUri, { + talerWithdrawUri: wop.taler_withdraw_uri, + restrictAge: p.restrictAge, + }); + + const withdrawalFinishedCond = wallet.waitForNotificationCond((x) => + x.type === NotificationType.WithdrawGroupFinished ? x : false, + ); + + // Withdraw (AKA select) + + await wallet.client.call(WalletApiOperation.AcceptBankIntegratedWithdrawal, { + exchangeBaseUrl: exchange.baseUrl, + talerWithdrawUri: wop.taler_withdraw_uri, + restrictAge: p.restrictAge, + }); + + // Confirm it + + await BankApi.confirmWithdrawalOperation(bank, user, wop); + + return { + withdrawalFinishedCond, + }; +} + /** * Withdraw balance. */ |