taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit 3163d7a41f99c022a7fc75b7d82ae964b6746e88
parent 88a66a4387fa2f70f2a53e4b72be46e3c5196762
Author: Florian Dold <florian@dold.me>
Date:   Tue, 17 Sep 2024 15:02:27 +0200

harness: test for the withdrawal prepare step

Diffstat:
Mpackages/taler-harness/src/integrationtests/test-wallet-balance.ts | 1-
Apackages/taler-harness/src/integrationtests/test-withdrawal-prepare.ts | 78++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpackages/taler-harness/src/integrationtests/testrunner.ts | 2++
3 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/packages/taler-harness/src/integrationtests/test-wallet-balance.ts b/packages/taler-harness/src/integrationtests/test-wallet-balance.ts @@ -21,7 +21,6 @@ import { Amounts, Duration, MerchantApiClient, - MerchantContractTerms, PreparePayResultType, TalerMerchantApi, } from "@gnu-taler/taler-util"; diff --git a/packages/taler-harness/src/integrationtests/test-withdrawal-prepare.ts b/packages/taler-harness/src/integrationtests/test-withdrawal-prepare.ts @@ -0,0 +1,78 @@ +/* + This file is part of GNU Taler + (C) 2020 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * Imports. + */ +import { j2s, Logger } from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { GlobalTestState } from "../harness/harness.js"; +import { createSimpleTestkudosEnvironmentV3 } from "../harness/helpers.js"; + +const logger = new Logger("test-withdrawal-prepare.ts"); + +/** + * Test the separate prepare step of a bank-integrated withdrawal. + */ +export async function runWithdrawalPrepareTest(t: GlobalTestState) { + // Set up test environment + + const { walletClient, bankClient, exchange } = + await createSimpleTestkudosEnvironmentV3(t); + + // Create a withdrawal operation + const user = await bankClient.createRandomBankUser(); + bankClient.setAuth(user); + const wop = await bankClient.createWithdrawalOperation( + user.username, + undefined, + ); + + const r1 = await walletClient.call( + WalletApiOperation.GetWithdrawalDetailsForUri, + { + talerWithdrawUri: wop.taler_withdraw_uri, + }, + ); + + console.log(j2s(r1)); + + t.assertTrue(!r1.amount); + + // Withdraw + + const prepRes = await walletClient.call( + WalletApiOperation.PrepareBankIntegratedWithdrawal, + { + talerWithdrawUri: wop.taler_withdraw_uri, + }, + ); + + logger.info(`Prep res: ${j2s(prepRes)}`); + + // Make sure that we can get the transaction details for the prepared transaction + + const txDetail = await walletClient.call( + WalletApiOperation.GetTransactionById, + { + transactionId: prepRes.transactionId, + }, + ); + + logger.info(`Transaction details: ${j2s(txDetail)}`); +} + +runWithdrawalPrepareTest.suites = ["wallet"]; diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -139,6 +139,7 @@ import { runWithdrawalHandoverTest } from "./test-withdrawal-handover.js"; import { runWithdrawalHugeTest } from "./test-withdrawal-huge.js"; import { runWithdrawalIdempotentTest } from "./test-withdrawal-idempotent.js"; import { runWithdrawalManualTest } from "./test-withdrawal-manual.js"; +import { runWithdrawalPrepareTest } from "./test-withdrawal-prepare.js"; /** * Test runner. @@ -268,6 +269,7 @@ const allTests: TestMainFunction[] = [ runKycMerchantDepositTest, runKycMerchantAggregateTest, runKycDepositDepositKyctransferTest, + runWithdrawalPrepareTest, ]; export interface TestRunSpec {