gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: use fakebank for integration


From: gnunet
Subject: [taler-wallet-core] branch master updated: use fakebank for integration tests
Date: Tue, 23 Aug 2022 22:30:08 +0200

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

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

The following commit(s) were added to refs/heads/master by this push:
     new bc434ebb use fakebank for integration tests
bc434ebb is described below

commit bc434ebb83a5985a3aa33b94310eb23d694214da
Author: Florian Dold <florian@dold.me>
AuthorDate: Tue Aug 23 22:30:05 2022 +0200

    use fakebank for integration tests
---
 packages/taler-wallet-cli/src/harness/harness.ts   | 27 +++++++++++++++++++---
 .../src/integrationtests/test-payment-on-demo.ts   |  1 +
 packages/taler-wallet-core/src/bank-api-client.ts  | 25 ++++++++++++++++----
 packages/taler-wallet-core/src/dbless.ts           |  1 +
 4 files changed, 46 insertions(+), 8 deletions(-)

diff --git a/packages/taler-wallet-cli/src/harness/harness.ts 
b/packages/taler-wallet-cli/src/harness/harness.ts
index 33f677d9..51f0ce64 100644
--- a/packages/taler-wallet-cli/src/harness/harness.ts
+++ b/packages/taler-wallet-cli/src/harness/harness.ts
@@ -42,6 +42,8 @@ import {
   TalerProtocolDuration,
 } from "@gnu-taler/taler-util";
 import {
+  BankAccessApi,
+  BankApi,
   BankServiceHandle,
   HarnessExchangeBankAccount,
   NodeHttpLib,
@@ -522,11 +524,17 @@ class LibEuFinBankService extends BankServiceBase 
implements BankServiceHandle {
     return url.href;
   }
 
+  // FIXME: Duplicate?  Where is this needed?
   get baseUrlAccessApi(): string {
     let url = new URL("access-api/", this.baseUrlDemobank);
     return url.href;
   }
 
+  get bankAccessApiBaseUrl(): string {
+    let url = new URL("access-api/", this.baseUrlDemobank);
+    return url.href;
+  }
+
   get baseUrlNetloc(): string {
     return `http://localhost:${this.bankConfig.httpPort}/`;
   }
@@ -796,10 +804,19 @@ class FakebankService extends BankServiceBase implements 
BankServiceHandle {
     return `http://localhost:${this.bankConfig.httpPort}/`;
   }
 
+  get bankAccessApiBaseUrl(): string {
+    let url = new URL("taler-bank-access/", this.baseUrl);
+    return url.href;
+  }
+
   async createExchangeAccount(
     accountName: string,
     password: string,
   ): Promise<HarnessExchangeBankAccount> {
+    // FIXME: Is there a better place to do this initialization?
+    await this.start();
+    await this.pingUntilAvailable();
+    await BankApi.registerAccount(this, accountName, password);
     return {
       accountName: accountName,
       accountPassword: password,
@@ -813,6 +830,10 @@ class FakebankService extends BankServiceBase implements 
BankServiceHandle {
   }
 
   async start(): Promise<void> {
+    if (this.proc) {
+      console.log("fakebank already running, not starting again");
+      return;
+    }
     this.proc = this.globalTestState.spawnService(
       "taler-fakebank-run",
       ["-c", this.configFile],
@@ -821,13 +842,13 @@ class FakebankService extends BankServiceBase implements 
BankServiceHandle {
   }
 
   async pingUntilAvailable(): Promise<void> {
-    const url = `http://localhost:${this.bankConfig.httpPort}/config`;
+    const url = 
`http://localhost:${this.bankConfig.httpPort}/taler-bank-integration/config`;
     await pingProc(this.proc, url, "bank");
   }
 }
 
 // Use libeufin bank instead of pybank.
-const useLibeufinBank = true;
+const useLibeufinBank = false;
 
 /**
  * Return a euFin or a pyBank implementation of
@@ -2032,7 +2053,7 @@ export function getPayto(label: string): string {
     return `payto://iban/SANDBOXX/${getRandomIban(
       label,
     )}?receiver-name=${label}`;
-  return `payto://x-taler-bank/${label}`;
+  return `payto://x-taler-bank/localhost/${label}`;
 }
 
 function waitMs(ms: number): Promise<void> {
diff --git 
a/packages/taler-wallet-cli/src/integrationtests/test-payment-on-demo.ts 
b/packages/taler-wallet-cli/src/integrationtests/test-payment-on-demo.ts
index 50a18944..737620ce 100644
--- a/packages/taler-wallet-cli/src/integrationtests/test-payment-on-demo.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/test-payment-on-demo.ts
@@ -34,6 +34,7 @@ export async function runPaymentDemoTest(t: GlobalTestState) {
   // Withdraw digital cash into the wallet.
   let bankInterface: BankServiceHandle = {
     baseUrl: "https://bank.demo.taler.net/";,
+    bankAccessApiBaseUrl: "https://bank.demo.taler.net/";,
     http: new NodeHttpLib(),
   };
   let user = await BankApi.createRandomBankUser(bankInterface);
diff --git a/packages/taler-wallet-core/src/bank-api-client.ts 
b/packages/taler-wallet-core/src/bank-api-client.ts
index a3889698..fa93409c 100644
--- a/packages/taler-wallet-core/src/bank-api-client.ts
+++ b/packages/taler-wallet-core/src/bank-api-client.ts
@@ -56,6 +56,7 @@ export interface BankAccountBalanceResponse {
 
 export interface BankServiceHandle {
   readonly baseUrl: string;
+  readonly bankAccessApiBaseUrl: string;
   readonly http: HttpRequestLibrary;
 }
 
@@ -96,12 +97,13 @@ const codecForWithdrawalOperationInfo = (): 
Codec<WithdrawalOperationInfo> =>
     .build("WithdrawalOperationInfo");
 
 export namespace BankApi {
+  // FIXME: Move to BankAccessApi?!
   export async function registerAccount(
     bank: BankServiceHandle,
     username: string,
     password: string,
   ): Promise<BankUser> {
-    const url = new URL("testing/register", bank.baseUrl);
+    const url = new URL("testing/register", bank.bankAccessApiBaseUrl);
     const resp = await bank.http.postJson(url.href, { username, password });
     let paytoUri = `payto://x-taler-bank/localhost/${username}`;
     if (resp.status !== 200 && resp.status !== 202) {
@@ -130,6 +132,7 @@ export namespace BankApi {
     };
   }
 
+  // FIXME: Move to BankAccessApi?!
   export async function createRandomBankUser(
     bank: BankServiceHandle,
   ): Promise<BankUser> {
@@ -177,9 +180,10 @@ export namespace BankApi {
   ): Promise<void> {
     const url = new URL(
       
`accounts/${bankUser.username}/withdrawals/${wopi.withdrawal_id}/confirm`,
-      bank.baseUrl,
+      bank.bankAccessApiBaseUrl,
     );
-    await bank.http.postJson(
+    logger.info(`confirming withdrawal operation via ${url.href}`);
+    const resp = await bank.http.postJson(
       url.href,
       {},
       {
@@ -191,6 +195,14 @@ export namespace BankApi {
         },
       },
     );
+
+    logger.info(`response status ${resp.status}`);
+    const respJson = await readSuccessResponseJsonOrThrow(
+      resp,
+      codecForAny(),
+    );
+
+    // FIXME: We don't check the status here!
   }
 
   export async function abortWithdrawalOperation(
@@ -222,7 +234,10 @@ export namespace BankAccessApi {
     bank: BankServiceHandle,
     bankUser: BankUser,
   ): Promise<BankAccountBalanceResponse> {
-    const url = new URL(`accounts/${bankUser.username}`, bank.baseUrl);
+    const url = new URL(
+      `accounts/${bankUser.username}`,
+      bank.bankAccessApiBaseUrl,
+    );
     const resp = await bank.http.get(url.href, {
       headers: {
         Authorization: makeBasicAuthHeader(
@@ -241,7 +256,7 @@ export namespace BankAccessApi {
   ): Promise<WithdrawalOperationInfo> {
     const url = new URL(
       `accounts/${bankUser.username}/withdrawals`,
-      bank.baseUrl,
+      bank.bankAccessApiBaseUrl,
     );
     const resp = await bank.http.postJson(
       url.href,
diff --git a/packages/taler-wallet-core/src/dbless.ts 
b/packages/taler-wallet-core/src/dbless.ts
index e0fe3d1c..9bc9c36b 100644
--- a/packages/taler-wallet-core/src/dbless.ts
+++ b/packages/taler-wallet-core/src/dbless.ts
@@ -109,6 +109,7 @@ export async function topupReserveWithDemobank(
 ) {
   const bankHandle: BankServiceHandle = {
     baseUrl: bankBaseUrl,
+    bankAccessApiBaseUrl: "??", // FIXME!
     http,
   };
   const bankUser = await BankApi.createRandomBankUser(bankHandle);

-- 
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]