From 16a5bb40834c01e50e84144bb644517e67a66187 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 20 Sep 2022 21:44:21 +0200 Subject: wallet-core: make basic backup work again --- packages/taler-wallet-cli/src/index.ts | 20 ++++++++++++++ .../integrationtests/test-wallet-backup-basic.ts | 31 ++++++++++++++++------ .../test-wallet-backup-doublespend.ts | 20 +++++++------- 3 files changed, 53 insertions(+), 18 deletions(-) (limited to 'packages/taler-wallet-cli') diff --git a/packages/taler-wallet-cli/src/index.ts b/packages/taler-wallet-cli/src/index.ts index 31e0b0f65..8fd0de642 100644 --- a/packages/taler-wallet-cli/src/index.ts +++ b/packages/taler-wallet-cli/src/index.ts @@ -886,6 +886,26 @@ currenciesCli }); }); +advancedCli + .subcommand("clearDatabase", "clear-database", { + help: "Clear the database, irrevocable deleting all data in the wallet.", + }) + .action(async (args) => { + await withWallet(args, async (wallet) => { + await wallet.client.call(WalletApiOperation.ClearDb, {}); + }); + }); + +advancedCli + .subcommand("recycle", "recycle", { + help: "Export, clear and re-import the database via the backup mechamism.", + }) + .action(async (args) => { + await withWallet(args, async (wallet) => { + await wallet.client.call(WalletApiOperation.Recycle, {}); + }); + }); + advancedCli .subcommand("payPrepare", "pay-prepare", { help: "Claim an order but don't pay yet.", diff --git a/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-basic.ts b/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-basic.ts index 23e01e5e1..c82d1e650 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-basic.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-basic.ts @@ -17,9 +17,13 @@ /** * Imports. */ +import { j2s } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; import { GlobalTestState, WalletCli } from "../harness/harness.js"; -import { createSimpleTestkudosEnvironment, withdrawViaBank } from "../harness/helpers.js"; +import { + createSimpleTestkudosEnvironment, + withdrawViaBank, +} from "../harness/helpers.js"; import { SyncService } from "../harness/sync"; /** @@ -28,13 +32,8 @@ import { SyncService } from "../harness/sync"; export async function runWalletBackupBasicTest(t: GlobalTestState) { // Set up test environment - const { - commonDb, - merchant, - wallet, - bank, - exchange, - } = await createSimpleTestkudosEnvironment(t); + const { commonDb, merchant, wallet, bank, exchange } = + await createSimpleTestkudosEnvironment(t); const sync = await SyncService.create(t, { currency: "TESTKUDOS", @@ -106,6 +105,9 @@ export async function runWalletBackupBasicTest(t: GlobalTestState) { {}, ); + const txs = await wallet.client.call(WalletApiOperation.GetTransactions, {}); + console.log(`backed up transactions ${j2s(txs)}`); + const wallet2 = new WalletCli(t, "wallet2"); // Check that the second wallet is a fresh wallet. @@ -129,6 +131,11 @@ export async function runWalletBackupBasicTest(t: GlobalTestState) { // Now do some basic checks that the restored wallet is still functional { + const txs = await wallet2.client.call( + WalletApiOperation.GetTransactions, + {}, + ); + console.log(`restored transactions ${j2s(txs)}`); const bal1 = await wallet2.client.call(WalletApiOperation.GetBalances, {}); t.assertAmountEquals(bal1.balances[0].available, "TESTKUDOS:14.1"); @@ -140,8 +147,16 @@ export async function runWalletBackupBasicTest(t: GlobalTestState) { amount: "TESTKUDOS:10", }); + await exchange.runWirewatchOnce(); + await wallet2.runUntilDone(); + const txs2 = await wallet2.client.call( + WalletApiOperation.GetTransactions, + {}, + ); + console.log(`tx after withdraw after restore ${j2s(txs2)}`); + const bal2 = await wallet2.client.call(WalletApiOperation.GetBalances, {}); t.assertAmountEquals(bal2.balances[0].available, "TESTKUDOS:23.82"); diff --git a/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-doublespend.ts b/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-doublespend.ts index 8c20dcc2b..ec1d6417b 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-doublespend.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-wallet-backup-doublespend.ts @@ -19,7 +19,11 @@ */ import { PreparePayResultType } from "@gnu-taler/taler-util"; import { WalletApiOperation } from "@gnu-taler/taler-wallet-core"; -import { GlobalTestState, WalletCli, MerchantPrivateApi } from "../harness/harness.js"; +import { + GlobalTestState, + WalletCli, + MerchantPrivateApi, +} from "../harness/harness.js"; import { createSimpleTestkudosEnvironment, makeTestPayment, @@ -33,13 +37,8 @@ import { SyncService } from "../harness/sync"; export async function runWalletBackupDoublespendTest(t: GlobalTestState) { // Set up test environment - const { - commonDb, - merchant, - wallet, - bank, - exchange, - } = await createSimpleTestkudosEnvironment(t); + const { commonDb, merchant, wallet, bank, exchange } = + await createSimpleTestkudosEnvironment(t); const sync = await SyncService.create(t, { currency: "TESTKUDOS", @@ -139,8 +138,9 @@ export async function runWalletBackupDoublespendTest(t: GlobalTestState) { }, ); - t.assertTrue( - preparePayResult.status === PreparePayResultType.PaymentPossible, + t.assertDeepEqual( + preparePayResult.status, + PreparePayResultType.PaymentPossible, ); const res = await wallet2.client.call(WalletApiOperation.ConfirmPay, { -- cgit v1.2.3