gnunet-svn
[Top][All Lists]
Advanced

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

[taler-wallet-core] branch master updated: harness: helper to provision


From: gnunet
Subject: [taler-wallet-core] branch master updated: harness: helper to provision merchant instances
Date: Mon, 09 Oct 2023 23:49:33 +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 1e1058632 harness: helper to provision merchant instances
1e1058632 is described below

commit 1e105863221ca01d7bc94613dfbf0604ad51b4fe
Author: Florian Dold <florian@dold.me>
AuthorDate: Mon Oct 9 23:49:40 2023 +0200

    harness: helper to provision merchant instances
---
 packages/taler-harness/src/harness/harness.ts      |  3 -
 packages/taler-harness/src/index.ts                | 87 ++++++++++++++++++++++
 .../test-merchant-instances-urls.ts                | 10 ---
 packages/taler-util/src/MerchantApiClient.ts       | 13 ----
 4 files changed, 87 insertions(+), 26 deletions(-)

diff --git a/packages/taler-harness/src/harness/harness.ts 
b/packages/taler-harness/src/harness/harness.ts
index e30cbcb54..65a19959a 100644
--- a/packages/taler-harness/src/harness/harness.ts
+++ b/packages/taler-harness/src/harness/harness.ts
@@ -1652,9 +1652,6 @@ export class MerchantService implements 
MerchantServiceInterface {
 
     const body: MerchantInstanceConfig = {
       auth,
-      accounts: instanceConfig.paytoUris.map((x) => ({
-        payto_uri: x,
-      })),
       id: instanceConfig.id,
       name: instanceConfig.name,
       address: instanceConfig.address ?? {},
diff --git a/packages/taler-harness/src/index.ts 
b/packages/taler-harness/src/index.ts
index b8e0cfca1..4ee89518a 100644
--- a/packages/taler-harness/src/index.ts
+++ b/packages/taler-harness/src/index.ts
@@ -30,6 +30,9 @@ import {
   setGlobalLogLevelFromString,
   RegisterAccountRequest,
   HttpStatusCode,
+  MerchantInstanceConfig,
+  Duration,
+  generateIban,
 } from "@gnu-taler/taler-util";
 import { clk } from "@gnu-taler/taler-util/clk";
 import {
@@ -521,6 +524,90 @@ deploymentCli
     }
   });
 
+deploymentCli
+  .subcommand("genIban", "gen-iban", {
+    help: "Generate a random IBAN.",
+  })
+  .requiredArgument("countryCode", clk.STRING)
+  .requiredArgument("length", clk.INT)
+  .action(async (args) => {
+    console.log(generateIban(args.genIban.countryCode, args.genIban.length));
+  });
+
+deploymentCli
+  .subcommand("provisionMerchantInstance", "provision-merchant-instance", {
+    help: "Provision a merchant backend instance.",
+  })
+  .requiredArgument("merchantApiBaseUrl", clk.STRING)
+  .requiredOption("managementToken", ["--management-token"], clk.STRING)
+  .requiredOption("instanceToken", ["--instance-token"], clk.STRING)
+  .requiredOption("name", ["--name"], clk.STRING)
+  .requiredOption("id", ["--id"], clk.STRING)
+  .requiredOption("payto", ["--payto"], clk.STRING)
+  .action(async (args) => {
+    const httpLib = createPlatformHttpLib();
+    const baseUrl = args.provisionMerchantInstance.merchantApiBaseUrl;
+    const managementToken = args.provisionMerchantInstance.managementToken;
+    const instanceToken = args.provisionMerchantInstance.instanceToken;
+    const instanceId = args.provisionMerchantInstance.id;
+    const body: MerchantInstanceConfig = {
+      address: {},
+      auth: {
+        method: "token",
+        token: args.provisionMerchantInstance.instanceToken,
+      },
+      default_pay_delay: Duration.toTalerProtocolDuration(
+        Duration.fromSpec({ hours: 1 }),
+      ),
+      default_wire_transfer_delay: { d_us: 1 },
+      id: instanceId,
+      jurisdiction: {},
+      name: args.provisionMerchantInstance.name,
+      use_stefan: true,
+    };
+    const url = new URL("management/instances", baseUrl);
+    const createResp = await httpLib.fetch(url.href, {
+      method: "POST",
+      body,
+      headers: {
+        Authorization: `Bearer ${managementToken}`,
+      },
+    });
+    if (createResp.status >= 200 && createResp.status <= 299) {
+      logger.info(`instance ${instanceId} created successfully`);
+    } else if (createResp.status === HttpStatusCode.Conflict) {
+      logger.info(`instance ${instanceId} already exists`);
+    } else {
+      logger.error(
+        `unable to create instance ${instanceId}, HTTP status 
${createResp.status}`,
+      );
+    }
+
+    const accountsUrl = new URL(
+      `instances/${instanceId}/private/accounts`,
+      baseUrl,
+    );
+    const accountBody = {
+      payto_uri: args.provisionMerchantInstance.payto,
+    };
+    const createAccountResp = await httpLib.fetch(accountsUrl.href, {
+      method: "POST",
+      body: accountBody,
+      headers: {
+        Authorization: `Bearer ${instanceToken}`,
+      },
+    });
+    if (createAccountResp.status != 200) {
+      console.error(
+        `unable to configure bank account for instance ${instanceId}, status 
${createAccountResp.status}`,
+      );
+      const resp = await createAccountResp.json();
+      console.error(j2s(resp));
+      process.exit(2);
+    }
+    logger.info(`successfully configured bank account for ${instanceId}`);
+  });
+
 deploymentCli
   .subcommand("provisionBankAccount", "provision-bank-account", {
     help: "Provision a corebank account.",
diff --git 
a/packages/taler-harness/src/integrationtests/test-merchant-instances-urls.ts 
b/packages/taler-harness/src/integrationtests/test-merchant-instances-urls.ts
index a037a01c5..7236436ac 100644
--- 
a/packages/taler-harness/src/integrationtests/test-merchant-instances-urls.ts
+++ 
b/packages/taler-harness/src/integrationtests/test-merchant-instances-urls.ts
@@ -72,11 +72,6 @@ export async function runMerchantInstancesUrlsTest(t: 
GlobalTestState) {
     ),
     jurisdiction: {},
     name: "My Default Instance",
-    accounts: [
-      {
-        payto_uri: generateRandomPayto("bar"),
-      },
-    ],
     auth: {
       method: "token",
       token: "secret-token:i-am-default",
@@ -95,11 +90,6 @@ export async function runMerchantInstancesUrlsTest(t: 
GlobalTestState) {
     ),
     jurisdiction: {},
     name: "My Second Instance",
-    accounts: [
-      {
-        payto_uri: generateRandomPayto("bar"),
-      },
-    ],
     auth: {
       method: "token",
       token: "secret-token:i-am-myinst",
diff --git a/packages/taler-util/src/MerchantApiClient.ts 
b/packages/taler-util/src/MerchantApiClient.ts
index 988872ae7..2e10e394a 100644
--- a/packages/taler-util/src/MerchantApiClient.ts
+++ b/packages/taler-util/src/MerchantApiClient.ts
@@ -74,18 +74,6 @@ export interface DeleteTippingReserveArgs {
   purge?: boolean;
 }
 
-export interface MerchantInstanceConfig {
-  accounts: MerchantBankAccount[];
-  auth: MerchantAuthConfiguration;
-  id: string;
-  name: string;
-  address: unknown;
-  jurisdiction: unknown;
-  use_stefan: boolean;
-  default_wire_transfer_delay: TalerProtocolDuration;
-  default_pay_delay: TalerProtocolDuration;
-}
-
 interface MerchantBankAccount {
   // The payto:// URI where the wallet will send coins.
   payto_uri: string;
@@ -102,7 +90,6 @@ interface MerchantBankAccount {
 }
 
 export interface MerchantInstanceConfig {
-  accounts: MerchantBankAccount[];
   auth: MerchantAuthConfiguration;
   id: string;
   name: string;

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