From 1f255b7f4e0225b1eede71bf7d67ca4b01c2aea4 Mon Sep 17 00:00:00 2001 From: MS Date: Mon, 16 Aug 2021 22:31:04 -1100 Subject: [PATCH] Extend test tooling to create Anastasis facades. --- .../src/integrationtests/libeufin.ts | 35 ++++++--- .../test-libeufin-api-facade-bad-request.ts | 1 + .../test-libeufin-api-facade.ts | 1 + .../test-libeufin-facade-anastasis.ts | 75 +++++++++++++++++++ .../test-libeufin-refund-multiple-users.ts | 1 + .../integrationtests/test-libeufin-refund.ts | 1 + 6 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 packages/taler-wallet-cli/src/integrationtests/test-libeufin-facade-anastasis.ts diff --git a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts index 1b393c269..71c7aad64 100644 --- a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts +++ b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts @@ -350,6 +350,7 @@ export interface SimulateIncomingTransactionRequest { export class NexusUserBundle { userReq: CreateNexusUserRequest; connReq: CreateEbicsBankConnectionRequest; + anastasisReq: CreateAnastasisFacadeRequest; twgReq: CreateTalerWireGatewayFacadeRequest; twgTransferPermission: PostNexusPermissionRequest; twgHistoryPermission: PostNexusPermissionRequest; @@ -378,6 +379,13 @@ export class NexusUserBundle { accountName: `local-account-${salt}`, connectionName: `connection-${salt}`, }; + this.anastasisReq = { + currency: "EUR", + name: `anastasis-${salt}`, + reserveTransferLevel: "report", + accountName: `local-account-${salt}`, + connectionName: `connection-${salt}`, + }; this.remoteAccountName = `remote-account-${salt}`; this.localAccountName = `local-account-${salt}`; this.twgTransferPermission = { @@ -1420,6 +1428,7 @@ export async function launchLibeufinServices( t: GlobalTestState, nexusUserBundle: NexusUserBundle[], sandboxUserBundle: SandboxUserBundle[], + withFacades: string[] = [], // takes only "twg" and/or "anastasis" ): Promise { const db = await setupDb(t); @@ -1469,16 +1478,24 @@ export async function launchLibeufinServices( nb.remoteAccountName, nb.localAccountName, ); - await LibeufinNexusApi.createTwgFacade(libeufinNexus, nb.twgReq); await LibeufinNexusApi.createUser(libeufinNexus, nb.userReq); - await LibeufinNexusApi.postPermission( - libeufinNexus, - nb.twgTransferPermission, - ); - await LibeufinNexusApi.postPermission( - libeufinNexus, - nb.twgHistoryPermission, - ); + for (let facade of withFacades) { + switch (facade) { + case "twg": + await LibeufinNexusApi.createTwgFacade(libeufinNexus, nb.twgReq); + await LibeufinNexusApi.postPermission( + libeufinNexus, + nb.twgTransferPermission, + ); + await LibeufinNexusApi.postPermission( + libeufinNexus, + nb.twgHistoryPermission, + ); + break; + case "anastasis": + await LibeufinNexusApi.createAnastasisFacade(libeufinNexus, nb.anastasisReq); + } + } } console.log( "Nexus user(s) / connection(s) / facade(s) / permission(s): created", diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade-bad-request.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade-bad-request.ts index de7580b1f..1917c0c11 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade-bad-request.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade-bad-request.ts @@ -45,6 +45,7 @@ export async function runLibeufinApiFacadeBadRequestTest(t: GlobalTestState) { t, [user01nexus], [user01sandbox], + ["twg"], ); console.log("malformed facade"); const baseUrl = libeufinServices.libeufinNexus.baseUrl; diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade.ts index 1400d2e65..0a0957b37 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-facade.ts @@ -45,6 +45,7 @@ export async function runLibeufinApiFacadeTest(t: GlobalTestState) { t, [user01nexus], [user01sandbox], + ["twg"], ); let resp = await LibeufinNexusApi.getAllFacades( libeufinServices.libeufinNexus, diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-facade-anastasis.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-facade-anastasis.ts new file mode 100644 index 000000000..f412ab8e4 --- /dev/null +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-facade-anastasis.ts @@ -0,0 +1,75 @@ +/* + 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 { + SandboxUserBundle, + NexusUserBundle, + launchLibeufinServices, + LibeufinNexusApi, +} from "./libeufin"; + +/** + * Run basic test with LibEuFin. + */ +export async function runLibeufinApiFacadeTest(t: GlobalTestState) { + /** + * User saltetd "01" + */ + const user01nexus = new NexusUserBundle( + "01", + "http://localhost:5010/ebicsweb", + ); + const user01sandbox = new SandboxUserBundle("01"); + + /** + * Launch Sandbox and Nexus. + */ + const libeufinServices = await launchLibeufinServices( + t, + [user01nexus], + [user01sandbox], + ["anastasis"], + ); + let resp = await LibeufinNexusApi.getAllFacades( + libeufinServices.libeufinNexus, + ); + // check that original facade shows up. + t.assertTrue(resp.data["facades"][0]["name"] == user01nexus.twgReq["name"]); + + const anastasisBaseUrl: string = resp.data["facades"][0]["twgBaseUrl"]; + t.assertTrue(typeof anastasisBaseUrl === "string"); + t.assertTrue(anastasisBaseUrl.startsWith("http://")); + t.assertTrue(anastasisBaseUrl.endsWith("/")); + + //***************************************// + // Here payments need to be generated // + // and checked via the Anastasis facade. // + //***************************************// + + // delete it. + resp = await LibeufinNexusApi.deleteFacade( + libeufinServices.libeufinNexus, + user01nexus.anastasisReq["name"], + ); + // check that no facades show up. + t.assertTrue(!resp.data.hasOwnProperty("facades")); +} + +runLibeufinApiFacadeTest.suites = ["libeufin"]; diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund-multiple-users.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund-multiple-users.ts index a79b705a8..d15a2d653 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund-multiple-users.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund-multiple-users.ts @@ -65,6 +65,7 @@ export async function runLibeufinRefundMultipleUsersTest(t: GlobalTestState) { t, [user01nexus, user02nexus], [user01sandbox, user02sandbox], + ["twg"], ); /** diff --git a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund.ts b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund.ts index 55a1f0c60..843a35d88 100644 --- a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund.ts +++ b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-refund.ts @@ -55,6 +55,7 @@ export async function runLibeufinRefundTest(t: GlobalTestState) { t, [user01nexus, user02nexus], [user01sandbox, user02sandbox], + ["twg"], ); /**