gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: ftbfs


From: gnunet
Subject: [taler-exchange] branch master updated: ftbfs
Date: Wed, 15 Jan 2020 14:58:12 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new b37fff0d ftbfs
b37fff0d is described below

commit b37fff0d5b08926169633ce8822de7ac616ae169
Author: Christian Grothoff <address@hidden>
AuthorDate: Wed Jan 15 14:57:58 2020 +0100

    ftbfs
---
 src/include/taler_util.h                          |  11 ++
 src/lib/testing_api_cmd_bank_admin_add_incoming.c | 168 +++++++++++-----------
 src/lib/testing_api_cmd_bank_history_credit.c     |  40 +++---
 src/util/test_payto.c                             |   7 +
 src/util/util.c                                   |  54 +++++++
 5 files changed, 178 insertions(+), 102 deletions(-)

diff --git a/src/include/taler_util.h b/src/include/taler_util.h
index 0f4eaab6..504f9b39 100644
--- a/src/include/taler_util.h
+++ b/src/include/taler_util.h
@@ -258,6 +258,17 @@ TALER_payto_xtalerbank_make (const char *bank_url,
                              const char *account_name);
 
 
+/**
+ * Create an x-taler-bank payto:// URL from an @a account_url.
+ *
+ * @param account_url the bank URL
+ * @param account_name the account name
+ * @return payto:// URL
+ */
+char *
+TALER_payto_xtalerbank_make2 (const char *account_url);
+
+
 /**
  * Given an x-taler-bank payto:// URL, compute
  * the HTTP(S) base URL of the account.
diff --git a/src/lib/testing_api_cmd_bank_admin_add_incoming.c 
b/src/lib/testing_api_cmd_bank_admin_add_incoming.c
index e490fce2..04e7d563 100644
--- a/src/lib/testing_api_cmd_bank_admin_add_incoming.c
+++ b/src/lib/testing_api_cmd_bank_admin_add_incoming.c
@@ -17,7 +17,7 @@
   <http://www.gnu.org/licenses/>
 */
 /**
- * @file exchange-lib/testing_api_cmd_admin_add_incoming.c
+ * @file lib/testing_api_cmd_admin_add_incoming.c
  * @brief implementation of a bank /admin/add-incoming command
  * @author Christian Grothoff
  * @author Marcello Stanisci
@@ -58,6 +58,11 @@ struct AdminAddIncomingState
    */
   const char *payto_debit_account;
 
+  /**
+   * Money sender account URL.
+   */
+  char *payto_credit_account;
+
   /**
    * Username to use for authentication.
    */
@@ -376,6 +381,7 @@ admin_add_incoming_cleanup (void *cls,
     GNUNET_SCHEDULER_cancel (fts->retry_task);
     fts->retry_task = NULL;
   }
+  GNUNET_free (fts->payto_credit_account);
   GNUNET_free (fts);
 }
 
@@ -402,7 +408,8 @@ admin_add_incoming_traits (void *cls,
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
                                     fts->payto_debit_account),
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
-                                    fts->exchange_credit_url),
+                                    fts->payto_credit_account),
+    TALER_TESTING_make_trait_url (0, fts->exchange_credit_url),
     TALER_TESTING_make_trait_amount_obj (0, &fts->amount),
     TALER_TESTING_make_trait_absolute_time (0, &fts->timestamp),
     TALER_TESTING_make_trait_reserve_priv (0,
@@ -420,52 +427,88 @@ admin_add_incoming_traits (void *cls,
 
 
 /**
- * Create admin/add-incoming command.
+ * Create internal state for "/admin/add-incoming" CMD.
  *
- * @param label command label.
- * @param amount amount to transfer.
- * @param exchange_base_url base URL of the account that receives this
- *        wire transer (which account receives money).
- * @param payto_debit_account which account sends money.
+ * @param amount the amount to transfer.
+ * @param account_bank_url base URL of the exchange account receiving the money
+ * @param payto_debit_account which account sends money
  * @param auth authentication data
- * @return the command.
+ * @return the internal state
  */
-struct TALER_TESTING_Command
-TALER_TESTING_cmd_admin_add_incoming
-  (const char *label,
-  const char *amount,
-  const char *exchange_base_url,
-  const struct TALER_BANK_AuthenticationData *auth,
-  const char *payto_debit_account)
+static struct AdminAddIncomingState *
+make_fts (const char *amount,
+          const char *exchange_base_url,
+          const struct TALER_BANK_AuthenticationData *auth,
+          const char *payto_debit_account)
 {
   struct AdminAddIncomingState *fts;
 
   fts = GNUNET_new (struct AdminAddIncomingState);
   fts->exchange_credit_url = exchange_base_url;
   fts->payto_debit_account = payto_debit_account;
+  fts->payto_credit_account
+    = TALER_payto_xtalerbank_make2 (exchange_base_url);
   fts->auth = *auth;
   if (GNUNET_OK !=
       TALER_string_to_amount (amount,
                               &fts->amount))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Failed to parse amount `%s' at %s\n",
-                amount,
-                label);
+                "Failed to parse amount `%s'\n",
+                amount);
     GNUNET_assert (0);
   }
+  return fts;
+}
 
-  {
-    struct TALER_TESTING_Command cmd = {
-      .cls = fts,
-      .label = label,
-      .run = &admin_add_incoming_run,
-      .cleanup = &admin_add_incoming_cleanup,
-      .traits = &admin_add_incoming_traits
-    };
-
-    return cmd;
-  }
+
+/**
+ * Helper function to create admin/add-incoming command.
+ *
+ * @param label command label.
+ * @param fts internal state to use
+ * @return the command.
+ */
+static struct TALER_TESTING_Command
+make_command (const char *label,
+              struct AdminAddIncomingState *fts)
+{
+  struct TALER_TESTING_Command cmd = {
+    .cls = fts,
+    .label = label,
+    .run = &admin_add_incoming_run,
+    .cleanup = &admin_add_incoming_cleanup,
+    .traits = &admin_add_incoming_traits
+  };
+
+  return cmd;
+}
+
+
+/**
+ * Create admin/add-incoming command.
+ *
+ * @param label command label.
+ * @param amount amount to transfer.
+ * @param exchange_base_url base URL of the account that receives this
+ *        wire transer (which account receives money).
+ * @param payto_debit_account which account sends money.
+ * @param auth authentication data
+ * @return the command.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_admin_add_incoming
+  (const char *label,
+  const char *amount,
+  const char *exchange_base_url,
+  const struct TALER_BANK_AuthenticationData *auth,
+  const char *payto_debit_account)
+{
+  return make_command (label,
+                       make_fts (amount,
+                                 exchange_base_url,
+                                 auth,
+                                 payto_debit_account));
 }
 
 
@@ -495,32 +538,13 @@ TALER_TESTING_cmd_admin_add_incoming_with_ref
 {
   struct AdminAddIncomingState *fts;
 
-  fts = GNUNET_new (struct AdminAddIncomingState);
-  fts->exchange_credit_url = account_base_url;
-  fts->payto_debit_account = payto_debit_account;
-  fts->auth = *auth;
+  fts = make_fts (amount,
+                  account_base_url,
+                  auth,
+                  payto_debit_account);
   fts->reserve_reference = ref;
-  if (GNUNET_OK !=
-      TALER_string_to_amount (amount,
-                              &fts->amount))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Failed to parse amount `%s' at %s\n",
-                amount,
-                label);
-    GNUNET_assert (0);
-  }
-  {
-    struct TALER_TESTING_Command cmd = {
-      .cls = fts,
-      .label = label,
-      .run = &admin_add_incoming_run,
-      .cleanup = &admin_add_incoming_cleanup,
-      .traits = &admin_add_incoming_traits
-    };
-
-    return cmd;
-  }
+  return make_command (label,
+                       fts);
 }
 
 
@@ -557,33 +581,15 @@ TALER_TESTING_cmd_admin_add_incoming_with_instance
 {
   struct AdminAddIncomingState *fts;
 
-  fts = GNUNET_new (struct AdminAddIncomingState);
-  fts->exchange_credit_url = account_base_url;
-  fts->payto_debit_account = payto_debit_account;
-  fts->auth = *auth;
+  fts = make_fts (amount,
+                  account_base_url,
+                  auth,
+                  payto_debit_account);
   fts->instance = instance;
   fts->config_filename = config_filename;
-  if (GNUNET_OK !=
-      TALER_string_to_amount (amount,
-                              &fts->amount))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Failed to parse amount `%s' at %s\n",
-                amount,
-                label);
-    GNUNET_assert (0);
-  }
-  {
-    struct TALER_TESTING_Command cmd = {
-      .cls = fts,
-      .label = label,
-      .run = &admin_add_incoming_run,
-      .cleanup = &admin_add_incoming_cleanup,
-      .traits = &admin_add_incoming_traits
-    };
-
-    return cmd;
-  }
+
+  return make_command (label,
+                       fts);
 }
 
 
@@ -607,4 +613,4 @@ TALER_TESTING_cmd_admin_add_incoming_retry (struct 
TALER_TESTING_Command cmd)
 }
 
 
-/* end of testing_api_cmd_admin_add_incoming.c */
+/* end of testing_api_cmd_bank_admin_add_incoming.c */
diff --git a/src/lib/testing_api_cmd_bank_history_credit.c 
b/src/lib/testing_api_cmd_bank_history_credit.c
index 40ec9916..d2f962e2 100644
--- a/src/lib/testing_api_cmd_bank_history_credit.c
+++ b/src/lib/testing_api_cmd_bank_history_credit.c
@@ -304,7 +304,6 @@ build_history (struct TALER_TESTING_Interpreter *is,
       continue; /* skip until we find the marker */
 
     TALER_LOG_DEBUG ("Found first row\n");
-
     if (build_history_hit_limit (total,
                                  hs,
                                  pos))
@@ -312,16 +311,14 @@ build_history (struct TALER_TESTING_Interpreter *is,
       TALER_LOG_DEBUG ("Hit history limit\n");
       break;
     }
-
-
-    GNUNET_assert
-      (GNUNET_OK == TALER_TESTING_GET_TRAIT_CREDIT_ACCOUNT
-        (pos, &credit_account));
-
-    GNUNET_assert
-      (GNUNET_OK == TALER_TESTING_GET_TRAIT_DEBIT_ACCOUNT
-        (pos, &debit_account));
-
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_TESTING_get_trait_payto (pos,
+                                                  TALER_TESTING_PT_CREDIT,
+                                                  &credit_account));
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_TESTING_get_trait_payto (pos,
+                                                  TALER_TESTING_PT_DEBIT,
+                                                  &debit_account));
     TALER_LOG_INFO ("Potential history element:"
                     " %s->%s; my account: %s\n",
                     debit_account,
@@ -365,8 +362,9 @@ build_history (struct TALER_TESTING_Interpreter *is,
     const char *credit_account;
     const char *debit_account;
 
-    if (GNUNET_OK != TALER_TESTING_GET_TRAIT_ROW_ID
-          (pos, &row_id))
+    if (GNUNET_OK !=
+        TALER_TESTING_GET_TRAIT_ROW_ID (pos,
+                                        &row_id))
       continue;
 
     if (NULL != row_id_start)
@@ -401,14 +399,14 @@ build_history (struct TALER_TESTING_Interpreter *is,
       break;
     }
 
-    GNUNET_assert
-      (GNUNET_OK == TALER_TESTING_GET_TRAIT_CREDIT_ACCOUNT
-        (pos, &credit_account));
-
-    GNUNET_assert
-      (GNUNET_OK == TALER_TESTING_GET_TRAIT_DEBIT_ACCOUNT
-        (pos, &debit_account));
-
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_TESTING_get_trait_payto (pos,
+                                                  TALER_TESTING_PT_CREDIT,
+                                                  &credit_account));
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_TESTING_get_trait_payto (pos,
+                                                  TALER_TESTING_PT_DEBIT,
+                                                  &debit_account));
     TALER_LOG_INFO ("Potential history bit:"
                     " %s->%s; my account: %s\n",
                     debit_account,
diff --git a/src/util/test_payto.c b/src/util/test_payto.c
index f0247f19..28caac1a 100644
--- a/src/util/test_payto.c
+++ b/src/util/test_payto.c
@@ -48,6 +48,9 @@ main (int argc,
          r);
   r = TALER_payto_xtalerbank_make ("https://localhost";,
                                    "account");
+  CHECK ("payto://x-taler-bank/localhost/account",
+         r);
+  r = TALER_payto_xtalerbank_make2 ("https://localhost/account";);
   CHECK ("payto://x-taler-bank/localhost/account",
          r);
   r = TALER_payto_xtalerbank_make ("http://localhost:80/";,
@@ -60,6 +63,10 @@ main (int argc,
          r);
   r = TALER_payto_xtalerbank_make ("http://localhost/";,
                                    "account");
+  r = TALER_payto_xtalerbank_make2 ("http://localhost:80/account";);
+  CHECK ("payto://x-taler-bank/localhost:80/account",
+         r);
+  r = TALER_payto_xtalerbank_make2 ("http://localhost/account";);
   CHECK ("payto://x-taler-bank/localhost:80/account",
          r);
   r = TALER_xtalerbank_base_url_from_payto (
diff --git a/src/util/util.c b/src/util/util.c
index 7f5e60e4..761aa98d 100644
--- a/src/util/util.c
+++ b/src/util/util.c
@@ -623,6 +623,60 @@ TALER_payto_xtalerbank_make (const char *bank_url,
 }
 
 
+/**
+ * Create an x-taler-bank payto:// URL from an @a account_url.
+ *
+ * @param account_url the bank URL
+ * @param account_name the account name
+ * @return payto:// URL
+ */
+char *
+TALER_payto_xtalerbank_make2 (const char *account_url)
+{
+  char *payto;
+  int plaintext;
+  const char *port;
+  size_t slen;
+  const char *account;
+
+  if (0 == strncasecmp ("https://";,
+                        account_url,
+                        strlen ("https://";)))
+  {
+    account_url += strlen ("https://";);
+    plaintext = GNUNET_NO;
+  }
+  else if (0 == strncasecmp ("http://";,
+                             account_url,
+                             strlen ("http://";)))
+  {
+    account_url += strlen ("http://";);
+    plaintext = GNUNET_YES;
+  }
+  else
+    return NULL;
+  account = strchr (account_url,
+                    '/');
+  if (NULL == account)
+    return NULL;
+  slen = account - account_url;
+  port = memchr (account_url,
+                 ':',
+                 slen);
+  if ( (0 < slen) &&
+       ('/' == account_url[slen - 1]) )
+    slen--;
+  GNUNET_asprintf (&payto,
+                   ( (NULL == port) && (GNUNET_YES == plaintext) )
+                   ? "payto://x-taler-bank/%.*s:80/%s"
+                   : "payto://x-taler-bank/%.*s/%s",
+                   (int) slen,
+                   account_url,
+                   account + 1);
+  return payto;
+}
+
+
 /**
  * Given an x-taler-bank payto:// URL, compute
  * the HTTP(S) base URL of the account.

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

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