taler-typescript-core

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

commit 7115e363e18b91ed1f3fdeb96c69a5cf3fab2953
parent bd595927c041e93cd0fb881304abf4fcc0539624
Author: Florian Dold <florian@dold.me>
Date:   Sat, 14 Feb 2026 00:57:16 +0100

-missing test file

Diffstat:
Apackages/taler-harness/src/integrationtests/test-wallet-refresh-redenominate.ts | 131+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 131 insertions(+), 0 deletions(-)

diff --git a/packages/taler-harness/src/integrationtests/test-wallet-refresh-redenominate.ts b/packages/taler-harness/src/integrationtests/test-wallet-refresh-redenominate.ts @@ -0,0 +1,131 @@ +/* + 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 { + Duration, + FlightRecordEvent, + j2s, + TalerMerchantApi, + TransactionMajorState, +} from "@gnu-taler/taler-util"; +import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; +import { defaultCoinConfig } from "../harness/denomStructures.js"; +import { + applyTimeTravelV2, + createSimpleTestkudosEnvironmentV3, + makeTestPaymentV2, + withdrawViaBankV3, +} from "../harness/environments.js"; +import { GlobalTestState } from "../harness/harness.js"; + +/** + * Run test for refresh after a payment. + */ +export async function runWalletRefreshRedenominateTest(t: GlobalTestState) { + // Set up test environment + + const { + walletClient, + bankClient, + exchange, + merchant, + merchantAdminAccessToken, + } = await createSimpleTestkudosEnvironmentV3( + t, + defaultCoinConfig.map((x) => x("TESTKUDOS")), + { + walletConfig: { + testing: { + devModeActive: true, + }, + }, + }, + ); + + // Withdraw digital cash into the wallet. + + await withdrawViaBankV3(t, { + walletClient, + bankClient, + exchange, + amount: "TESTKUDOS:20", + }); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {}); + + const order: TalerMerchantApi.Order = { + summary: "Buy me!", + amount: "TESTKUDOS:5", + fulfillment_url: "taler://fulfillment-success/thx", + }; + + await walletClient.call(WalletApiOperation.ApplyDevExperiment, { + devExperimentUri: "taler://dev-experiment/start-block-refresh", + }); + + const payRes = await makeTestPaymentV2(t, { + walletClient, + merchant, + order, + merchantAdminAccessToken, + }); + await walletClient.call(WalletApiOperation.TestingWaitTransactionState, { + transactionId: payRes.transactionId, + txState: { + major: TransactionMajorState.Done, + }, + }); + + const txns = await walletClient.call(WalletApiOperation.GetTransactionsV2, { + includeAll: true, + }); + console.log(j2s(txns)); + + await applyTimeTravelV2( + Duration.toMilliseconds( + Duration.fromSpec({ + days: 14, + }), + ), + { + exchange, + merchant, + walletClient, + }, + ); + + await walletClient.call(WalletApiOperation.ApplyDevExperiment, { + devExperimentUri: "taler://dev-experiment/stop-block-refresh", + }); + + await walletClient.call(WalletApiOperation.TestingWaitTransactionsFinal, {}); + + const recs = await walletClient.call( + WalletApiOperation.TestingGetFlightRecords, + {}, + ); + + // Check that the wallet encountered the "Gone" response from the exchange. + const myRec = recs.flightRecords.find( + (x) => x.event === FlightRecordEvent.MeltGone, + ); + t.assertTrue(myRec != null); +} + +runWalletRefreshRedenominateTest.suites = ["wallet"];