From 39cbad89bbed61487a973e4df92084da1b0dc728 Mon Sep 17 00:00:00 2001 From: MS Date: Mon, 23 Aug 2021 03:31:48 -1100 Subject: [PATCH] Testing Sandbox CLI wire transfer. --- .../src/integrationtests/libeufin.ts | 18 +++++ ...test-libeufin-sandbox-wire-transfer-cli.ts | 72 +++++++++++++++++++ .../src/integrationtests/testrunner.ts | 2 + 3 files changed, 92 insertions(+) create mode 100644 packages/taler-wallet-cli/src/integrationtests/test-libeufin-sandbox-wire-transfer-cli.ts diff --git a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts index c5580be9d..65c27ef20 100644 --- a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts +++ b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts @@ -229,6 +229,23 @@ export class LibeufinSandboxService implements LibeufinSandboxServiceInterface { ); } + async makeTransaction( + debit: string, + credit: string, + amount: string, + subject: string,): Promise { + const stdout = await sh( + this.globalTestState, + "libeufin-sandbox-maketransfer", + `libeufin-sandbox make-transaction --debit-account=${debit} --credit-account=${credit} ${amount} "${subject}"`, + { + ...process.env, + LIBEUFIN_SANDBOX_DB_CONNECTION: this.sandboxConfig.databaseJdbcUri, + }, + ); + return stdout; + } + async pingUntilAvailable(): Promise { const url = `${this.baseUrl}config`; await pingProc(this.sandboxProc, url, "libeufin-sandbox"); @@ -780,6 +797,7 @@ interface NewTalerWireGatewayReq { } export namespace LibeufinSandboxApi { + export async function rotateKeys( libeufinSandboxService: LibeufinSandboxServiceInterface, hostID: string, diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-sandbox-wire-transfer-cli.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-sandbox-wire-transfer-cli.ts new file mode 100644 index 000000000..503468990 --- /dev/null +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-sandbox-wire-transfer-cli.ts @@ -0,0 +1,72 @@ +/* + 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 + */ + +/** + * Imports. + */ +import { GlobalTestState } from "./harness"; +import { + NexusUserBundle, + LibeufinNexusApi, + LibeufinNexusService, + LibeufinSandboxService, + LibeufinSandboxApi, + findNexusPayment, +} from "./libeufin"; + +export async function runLibeufinSandboxWireTransferCliTest(t: GlobalTestState) { + + const sandbox = await LibeufinSandboxService.create(t, { + httpPort: 5012, + databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`, + }); + await sandbox.start(); + await sandbox.pingUntilAvailable(); + await LibeufinSandboxApi.createBankAccount(sandbox, { + iban: "DE71500105179674997361", + bic: "BELADEBEXXX", + name: "Mock Name", + label: "mock-account", + currency: "EUR" + }); + + await LibeufinSandboxApi.createBankAccount(sandbox, { + iban: "DE71500105179674997364", + bic: "BELADEBEXXX", + name: "Mock Name 2", + label: "mock-account-2", + currency: "EUR" + }); + await sandbox.makeTransaction( + "mock-account", "mock-account-2", "EUR:1", "one!" + ); + await sandbox.makeTransaction( + "mock-account", "mock-account-2", "EUR:1", "two!" + ); + await sandbox.makeTransaction( + "mock-account", "mock-account-2", "EUR:1", "three!" + ); + await sandbox.makeTransaction( + "mock-account-2", "mock-account", "EUR:1", "Give one back." + ); + await sandbox.makeTransaction( + "mock-account-2", "mock-account", "EUR:0.11", "Give fraction back." + ); + let ret = await LibeufinSandboxApi.getAccountInfoWithBalance(sandbox, "mock-account-2"); + console.log(ret.data.balance) + t.assertTrue(ret.data.balance == "EUR:1.89") +} +runLibeufinSandboxWireTransferCliTest.suites = ["libeufin"]; diff --git a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts index e258330d6..ab699e8b5 100644 --- a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts +++ b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts @@ -70,6 +70,7 @@ import { runLibeufinApiBankconnectionTest } from "./test-libeufin-api-bankconnec import { runLibeufinApiUsersTest } from "./test-libeufin-api-users"; import { runLibeufinApiBankaccountTest } from "./test-libeufin-api-bankaccount"; import { runLibeufinApiSandboxTransactionsTest } from "./test-libeufin-api-sandbox-transactions"; +import { runLibeufinSandboxWireTransferCliTest } from "./test-libeufin-sandbox-wire-transfer-cli"; import { runDepositTest } from "./test-deposit"; import CancellationToken from "cancellationtoken"; import { runMerchantInstancesTest } from "./test-merchant-instances"; @@ -117,6 +118,7 @@ const allTests: TestMainFunction[] = [ runLibeufinApiBankaccountTest, runLibeufinApiBankconnectionTest, runLibeufinApiSandboxTransactionsTest, + runLibeufinSandboxWireTransferCliTest, runMerchantExchangeConfusionTest, runMerchantInstancesTest, runMerchantInstancesDeleteTest,