From 3aa0b812f476791b3c3feddb1421e212cf981b3c Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 7 Mar 2022 23:57:25 +0100 Subject: [PATCH] wallet: fix withdrawal in timetravel test --- .../taler-wallet-cli/src/harness/helpers.ts | 54 ++++++++++--------- .../test-timetravel-withdraw.ts | 20 +++---- 2 files changed, 39 insertions(+), 35 deletions(-) diff --git a/packages/taler-wallet-cli/src/harness/helpers.ts b/packages/taler-wallet-cli/src/harness/helpers.ts index a5d3b3150..f19c6a115 100644 --- a/packages/taler-wallet-cli/src/harness/helpers.ts +++ b/packages/taler-wallet-cli/src/harness/helpers.ts @@ -23,36 +23,36 @@ /** * Imports */ +import { + AmountString, + ConfirmPayResultType, + ContractTerms, + Duration, + PreparePayResultType, +} from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { CoinConfig, defaultCoinConfig } from "./denomStructures.js"; import { FaultInjectedExchangeService, FaultInjectedMerchantService, -} from "./faultInjection"; -import { CoinConfig, defaultCoinConfig } from "./denomStructures"; +} from "./faultInjection.js"; import { - AmountString, - Duration, - ContractTerms, - PreparePayResultType, - ConfirmPayResultType, -} from "@gnu-taler/taler-util"; -import { - DbInfo, - BankService, - ExchangeService, - MerchantService, - WalletCli, - GlobalTestState, - setupDb, - ExchangeServiceInterface, - BankApi, BankAccessApi, - MerchantServiceInterface, - MerchantPrivateApi, - HarnessExchangeBankAccount, - WithAuthorization, + BankApi, + BankService, + DbInfo, + ExchangeService, + ExchangeServiceInterface, getPayto, + GlobalTestState, + HarnessExchangeBankAccount, + MerchantPrivateApi, + MerchantService, + MerchantServiceInterface, + setupDb, + WalletCli, + WithAuthorization, } from "./harness.js"; -import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; export interface SimpleTestEnvironment { commonDb: DbInfo; @@ -242,7 +242,9 @@ export async function createFaultInjectedMerchantTestkudosEnvironment( } /** - * Withdraw balance. + * Start withdrawing into the wallet. + * + * Only starts the operation, does not wait for it to finish. */ export async function startWithdrawViaBank( t: GlobalTestState, @@ -277,8 +279,8 @@ export async function startWithdrawViaBank( await BankApi.confirmWithdrawalOperation(bank, user, wop); - await wallet.runPending(); - await wallet.runUntilDone(); + // We do *not* call runPending / runUntilDone on the wallet here. + // Some tests rely on the final withdraw failing. } /** diff --git a/packages/taler-wallet-cli/src/integrationtests/test-timetravel-withdraw.ts b/packages/taler-wallet-cli/src/integrationtests/test-timetravel-withdraw.ts index 2ff857057..9335af9f5 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-timetravel-withdraw.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-timetravel-withdraw.ts @@ -17,14 +17,14 @@ /** * Imports. */ +import { Duration, TransactionType } from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { GlobalTestState } from "../harness/harness.js"; import { createSimpleTestkudosEnvironment, - withdrawViaBank, startWithdrawViaBank, + withdrawViaBank, } from "../harness/helpers.js"; -import { Duration, TransactionType } from "@gnu-taler/taler-util"; -import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; /** * Basic time travel test. @@ -32,12 +32,8 @@ import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; export async function runTimetravelWithdrawTest(t: GlobalTestState) { // Set up test environment - const { - wallet, - bank, - exchange, - merchant, - } = await createSimpleTestkudosEnvironment(t); + const { wallet, bank, exchange, merchant } = + await createSimpleTestkudosEnvironment(t); // Withdraw digital cash into the wallet. @@ -61,6 +57,8 @@ export async function runTimetravelWithdrawTest(t: GlobalTestState) { await merchant.start(); await merchant.pingUntilAvailable(); + console.log("starting withdrawal via bank"); + // This should fail, as the wallet didn't time travel yet. await startWithdrawViaBank(t, { wallet, @@ -69,9 +67,13 @@ export async function runTimetravelWithdrawTest(t: GlobalTestState) { amount: "TESTKUDOS:20", }); + console.log("starting withdrawal done"); + // Check that transactions are correct for the failed withdrawal { + console.log("running until done (should run into maxRetries limit)"); await wallet.runUntilDone({ maxRetries: 5 }); + console.log("wallet done running"); const transactions = await wallet.client.call( WalletApiOperation.GetTransactions, {},