gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: Libeufin API testing.


From: gnunet
Subject: [taler-wallet-core] branch master updated: Libeufin API testing.
Date: Wed, 12 May 2021 09:58:52 +0200

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new 41b65e90 Libeufin API testing.
41b65e90 is described below

commit 41b65e90b9eb1a0a4a999bce75df29a0ea3aedcc
Author: MS <ms@taler.net>
AuthorDate: Wed May 12 09:58:17 2021 +0200

    Libeufin API testing.
    
    Testing CRUD operations of the 'bankaccount' resource.
---
 .../src/integrationtests/libeufin.ts               |  90 ++++++++++++++-
 .../test-libeufin-api-bankaccount.ts               | 126 +++++++++++++++++++++
 .../src/integrationtests/testrunner.ts             |   2 +
 3 files changed, 214 insertions(+), 4 deletions(-)

diff --git a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts 
b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts
index 638926a4..eb9d63f1 100644
--- a/packages/taler-wallet-cli/src/integrationtests/libeufin.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/libeufin.ts
@@ -54,6 +54,52 @@ export interface LibeufinNexusConfig {
   databaseJdbcUri: string;
 }
 
+interface LibeufinNexusMoneyMovement {
+  amount: string;
+  creditDebitIndicator: string;
+  details: {
+    debtor: {
+      name: string;
+    };
+    debtorAccount: {
+      iban: string;
+    };
+    debtorAgent: {
+      bic: string;
+    };
+    creditor: {
+      name: string;
+    };
+    creditorAccount: {
+      iban: string;
+    };
+    creditorAgent: {
+      bic: string;
+    };
+    endToEndId: string;
+    unstructuredRemittanceInformation: string;
+  }
+}
+
+interface LibeufinNexusBatches {
+  batchTransactions: Array<LibeufinNexusMoneyMovement>;
+}
+
+interface LibeufinNexusTransaction {
+  amount: string;
+  creditDebitIndicator: string;
+  status: string;
+  bankTransactionCode: string;
+  valueDate: string;
+  bookingDate: string;
+  accountServicerRef: string;
+  batches: Array<LibeufinNexusBatches>;
+}
+
+interface LibeufinNexusTransactions {
+  transactions: Array<LibeufinNexusTransaction>;
+}
+
 export interface LibeufinCliDetails {
   nexusUrl: string;
   sandboxUrl: string;
@@ -667,6 +713,15 @@ export namespace LibeufinSandboxApi {
     await axios.post(url.href, req);
   }
 
+  export async function bookPayment2(
+    libeufinSandboxService: LibeufinSandboxService,
+    req: LibeufinSandboxAddIncomingRequest,
+  ) {
+    const baseUrl = libeufinSandboxService.baseUrl;
+    let url = new URL("admin/payments", baseUrl);
+    await axios.post(url.href, req);
+  }
+
   export async function bookPayment(
     libeufinSandboxService: LibeufinSandboxService,
     creditorBundle: SandboxUserBundle,
@@ -688,9 +743,7 @@ export namespace LibeufinSandboxApi {
       uid: getRandomString(),
       direction: "CRDT",
     };
-    const baseUrl = libeufinSandboxService.baseUrl;
-    let url = new URL("admin/payments", baseUrl);
-    await axios.post(url.href, req);
+    await bookPayment2(libeufinSandboxService, req);
   }
 
   export async function simulateIncomingTransaction(
@@ -783,6 +836,7 @@ export interface PostNexusPermissionRequest {
 }
 
 export namespace LibeufinNexusApi {
+
   export async function createEbicsBankConnection(
     libeufinNexusService: LibeufinNexusServiceInterface,
     req: CreateEbicsBankConnectionRequest,
@@ -943,7 +997,7 @@ export namespace LibeufinNexusApi {
     accountName: string,
     username: string = "admin",
     password: string = "test",
-  ): Promise<void> {
+  ): Promise<any> {
     const baseUrl = libeufinNexusService.baseUrl;
     let url = new URL(
       `/bank-accounts/${accountName}/transactions`,
@@ -958,6 +1012,7 @@ export namespace LibeufinNexusApi {
         },
       },
     );
+    return response;
   }
 
   export async function fetchAllTransactions(
@@ -1173,3 +1228,30 @@ export async function launchLibeufinServices(
     libeufinSandbox: libeufinSandbox,
   };
 }
+
+/**
+ * Helper function that searches a payment among
+ * a list, as returned by Nexus.  The key is just
+ * the payment subject.
+ */
+export function findNexusPayment(
+  key: string,
+  payments: LibeufinNexusTransactions,
+): LibeufinNexusMoneyMovement | void {
+  
+  let transactions = payments["transactions"];
+  for (let i = 0; i < transactions.length; i++) {
+
+    let batches = transactions[i]["batches"];
+    for (let y = 0; y < batches.length; y++) {
+
+      let movements = batches[y]["batchTransactions"];
+      for (let z = 0; z < movements.length; z++) {
+
+        let movement = movements[z];
+        if (movement["details"]["unstructuredRemittanceInformation"] == key)
+          return movement;
+      }
+    }
+  }
+}
diff --git 
a/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
 
b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
new file mode 100644
index 00000000..6f7c4751
--- /dev/null
+++ 
b/packages/taler-wallet-cli/src/integrationtests/test-libeufin-api-bankaccount.ts
@@ -0,0 +1,126 @@
+/*
+ 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 { GlobalTestState } from "./harness";
+import {
+  NexusUserBundle,
+  LibeufinNexusApi,
+  LibeufinNexusService,
+  LibeufinSandboxService,
+  LibeufinSandboxApi,
+  findNexusPayment,
+} from "./libeufin";
+
+/**
+ * Run basic test with LibEuFin.
+ */
+export async function runLibeufinApiBankaccountTest(t: GlobalTestState) {
+  const nexus = await LibeufinNexusService.create(t, {
+    httpPort: 5011,
+    databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-nexus.sqlite3`,
+  });
+  await nexus.start();
+  await nexus.pingUntilAvailable();
+
+  await LibeufinNexusApi.createUser(
+    nexus,
+    {
+      username: "one",
+      password: "testing-the-bankaccount-api",
+    }
+  );
+  const sandbox = await LibeufinSandboxService.create(t, {
+    httpPort: 5012,
+    databaseJdbcUri: `jdbc:sqlite:${t.testDir}/libeufin-sandbox.sqlite3`,
+  });
+  await sandbox.start();
+  await sandbox.pingUntilAvailable();
+  await LibeufinSandboxApi.createEbicsHost(sandbox, "mock");
+  await LibeufinSandboxApi.createEbicsSubscriber(
+    sandbox,
+    {
+      hostID: "mock", 
+      userID: "mock", 
+      partnerID: "mock", 
+    }
+  );
+  await LibeufinSandboxApi.createEbicsBankAccount(
+    sandbox,
+    {
+      subscriber: {
+        hostID: "mock",
+        partnerID: "mock",
+        userID: "mock",
+      },
+      iban: "DE71500105179674997361",
+      bic: "BELADEBEXXX",
+      name: "mock",
+      currency: "mock",
+      label: "mock",
+    },
+  );
+  await LibeufinNexusApi.createEbicsBankConnection(
+    nexus,
+    {
+      name: "bankaccount-api-test-connection",
+      ebicsURL: "http://localhost:5012/ebicsweb";,
+      hostID: "mock",
+      userID: "mock",
+      partnerID: "mock",
+    }
+  );
+  await LibeufinNexusApi.connectBankConnection(
+    nexus, "bankaccount-api-test-connection"
+  );
+  await LibeufinNexusApi.fetchAccounts(nexus, 
"bankaccount-api-test-connection");
+
+  await LibeufinNexusApi.importConnectionAccount(
+    nexus,
+    "bankaccount-api-test-connection",
+    "mock",
+    "local-mock",
+  );
+  
+  await LibeufinSandboxApi.bookPayment2(
+    sandbox,
+    {
+      creditorIban: "DE71500105179674997361",
+      creditorBic: "BELADEBEXXX",
+      creditorName: "mock",
+      debitorIban: "DE84500105176881385584",
+      debitorBic: "BELADEBEXXX",
+      debitorName: "mock2",
+      subject: "mock subject",
+      currency: "EUR",
+      amount: "1",
+      uid: "mock",
+      direction: "CRDT",
+    }
+  );
+  await LibeufinNexusApi.fetchAllTransactions(
+    nexus,
+    "local-mock"
+  );
+  let transactions = await LibeufinNexusApi.getAccountTransactions(
+    nexus,
+    "local-mock"
+  );
+  let el = findNexusPayment("mock subject", transactions.data);
+  t.assertTrue(el instanceof Object);
+}
diff --git a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts 
b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
index c57cd8d1..44b0a728 100644
--- a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
@@ -60,6 +60,7 @@ import { runLibeufinRefundMultipleUsersTest } from 
"./test-libeufin-refund-multi
 import { runLibeufinTutorialTest } from "./test-libeufin-tutorial";
 import { runLibeufinApiPermissionsTest } from 
"./test-libeufin-api-permissions";
 import { runLibeufinApiUsersTest } from "./test-libeufin-api-users";
+import { runLibeufinApiBankaccountTest } from 
"./test-libeufin-api-bankaccount";
 import { runDepositTest } from "./test-deposit";
 import CancellationToken from "cancellationtoken";
 import { runMerchantInstancesTest } from "./test-merchant-instances";
@@ -93,6 +94,7 @@ const allTests: TestMainFunction[] = [
   runLibeufinRefundMultipleUsersTest,
   runLibeufinApiPermissionsTest,
   runLibeufinApiUsersTest,
+  runLibeufinApiBankaccountTest,
   runMerchantExchangeConfusionTest,
   runMerchantInstancesTest,
   runMerchantInstancesDeleteTest,

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]