diff options
author | Florian Dold <florian@dold.me> | 2024-04-08 14:34:38 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2024-04-08 14:34:38 +0200 |
commit | f3f35390cf2ef78eef9f4aff9dd337c33eeb3931 (patch) | |
tree | 8b07288763a89c7b5ec1dc75d53201f153ed0c1d /packages/taler-harness | |
parent | 22856a7756cc41a0bd664eb947fb94f1e1b09e8d (diff) | |
download | wallet-core-f3f35390cf2ef78eef9f4aff9dd337c33eeb3931.tar.xz |
wallet-core: improve refresh error handling, test
Diffstat (limited to 'packages/taler-harness')
3 files changed, 114 insertions, 5 deletions
diff --git a/packages/taler-harness/src/integrationtests/test-revocation.ts b/packages/taler-harness/src/integrationtests/test-revocation.ts index 6b47951bc..ac118e4eb 100644 --- a/packages/taler-harness/src/integrationtests/test-revocation.ts +++ b/packages/taler-harness/src/integrationtests/test-revocation.ts @@ -20,15 +20,15 @@ import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { CoinConfig } from "../harness/denomStructures.js"; import { - GlobalTestState, + BankService, ExchangeService, + GlobalTestState, MerchantService, WalletCli, - setupDb, - BankService, + WalletClient, delayMs, generateRandomPayto, - WalletClient, + setupDb, } from "../harness/harness.js"; import { SimpleTestEnvironmentNg, @@ -208,7 +208,7 @@ export async function runRevocationTest(t: GlobalTestState) { console.log(coinDump); const coinPubList = coinDump.coins.map((x) => x.coin_pub); await walletClient.call(WalletApiOperation.ForceRefresh, { - coinPubList, + refreshCoinSpecs: coinPubList.map((x) => ({ coinPub: x })), }); await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {}); diff --git a/packages/taler-harness/src/integrationtests/test-wallet-refresh-errors.ts b/packages/taler-harness/src/integrationtests/test-wallet-refresh-errors.ts new file mode 100644 index 000000000..0f1efd35e --- /dev/null +++ b/packages/taler-harness/src/integrationtests/test-wallet-refresh-errors.ts @@ -0,0 +1,107 @@ +/* + 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 { AmountString } from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { CoinConfig } from "../harness/denomStructures.js"; +import { GlobalTestState } from "../harness/harness.js"; +import { + createSimpleTestkudosEnvironmentV2, + withdrawViaBankV2, +} from "../harness/helpers.js"; + +const coinCommon = { + cipher: "RSA" as const, + durationLegal: "3 years", + durationSpend: "2 years", + durationWithdraw: "7 days", + feeDeposit: "TESTKUDOS:0", + feeRefresh: "TESTKUDOS:0", + feeRefund: "TESTKUDOS:0", + feeWithdraw: "TESTKUDOS:0", + rsaKeySize: 1024, +}; + +/** + * Run test for refreshe after a payment. + */ +export async function runWalletRefreshErrorsTest(t: GlobalTestState) { + // Set up test environment + + const coinConfigList: CoinConfig[] = [ + { + ...coinCommon, + name: "n1", + value: "TESTKUDOS:1", + }, + { + ...coinCommon, + name: "n5", + value: "TESTKUDOS:5", + }, + ]; + + const { walletClient, bank, exchange, merchant } = + await createSimpleTestkudosEnvironmentV2(t, coinConfigList); + + const wres = await withdrawViaBankV2(t, { + amount: "TESTKUDOS:5", + bank, + exchange, + walletClient, + }); + await wres.withdrawalFinishedCond; + + const backupResp = await walletClient.call( + WalletApiOperation.CreateStoredBackup, + {}, + ); + + const coinDump = await walletClient.call(WalletApiOperation.DumpCoins, {}); + + t.assertDeepEqual(coinDump.coins.length, 1); + + await walletClient.call(WalletApiOperation.ForceRefresh, { + refreshCoinSpecs: [ + { + coinPub: coinDump.coins[0].coin_pub, + amount: "TESTKUDOS:3" as AmountString, + }, + ], + }); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {}); + + await walletClient.call(WalletApiOperation.RecoverStoredBackup, { + name: backupResp.name, + }); + + await walletClient.call(WalletApiOperation.ForceRefresh, { + refreshCoinSpecs: [ + { + coinPub: coinDump.coins[0].coin_pub, + amount: "TESTKUDOS:3" as AmountString, + }, + ], + }); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {}); +} + +runWalletRefreshErrorsTest.suites = ["wallet"]; diff --git a/packages/taler-harness/src/integrationtests/testrunner.ts b/packages/taler-harness/src/integrationtests/testrunner.ts index 6e76261f0..54c211c6b 100644 --- a/packages/taler-harness/src/integrationtests/testrunner.ts +++ b/packages/taler-harness/src/integrationtests/testrunner.ts @@ -106,6 +106,7 @@ import { runWalletGenDbTest } from "./test-wallet-gendb.js"; import { runWalletInsufficientBalanceTest } from "./test-wallet-insufficient-balance.js"; import { runWalletNotificationsTest } from "./test-wallet-notifications.js"; import { runWalletObservabilityTest } from "./test-wallet-observability.js"; +import { runWalletRefreshErrorsTest } from "./test-wallet-refresh-errors.js"; import { runWalletRefreshTest } from "./test-wallet-refresh.js"; import { runWalletWirefeesTest } from "./test-wallet-wirefees.js"; import { runWallettestingTest } from "./test-wallettesting.js"; @@ -222,6 +223,7 @@ const allTests: TestMainFunction[] = [ runWalletBlockedPayPeerPushTest, runWalletBlockedPayPeerPullTest, runWalletExchangeUpdateTest, + runWalletRefreshErrorsTest, ]; export interface TestRunSpec { |