gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant] branch master updated: add test for #6876, and minor fi


From: gnunet
Subject: [taler-merchant] branch master updated: add test for #6876, and minor fixes
Date: Wed, 19 May 2021 15:14:14 +0200

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

grothoff pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new 8c0719db add test for #6876, and minor fixes
8c0719db is described below

commit 8c0719db1f153106ea69a7224694f4a39394707a
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Wed May 19 15:14:12 2021 +0200

    add test for #6876, and minor fixes
---
 src/backend/taler-merchant-httpd.c           |  2 +-
 src/include/taler_merchant_testing_lib.h     | 24 +++++++++
 src/lib/merchant_api_post_transfers.c        |  6 +++
 src/testing/test_merchant_api.c              | 12 +++++
 src/testing/testing_api_cmd_post_transfers.c | 79 ++++++++++++++++++++++++++++
 5 files changed, 122 insertions(+), 1 deletion(-)

diff --git a/src/backend/taler-merchant-httpd.c 
b/src/backend/taler-merchant-httpd.c
index 701b8acd..e9572ecb 100644
--- a/src/backend/taler-merchant-httpd.c
+++ b/src/backend/taler-merchant-httpd.c
@@ -1406,7 +1406,7 @@ url_handler (void *cls,
     },
     /* DELETE /transfers/$ID: */
     {
-      .url_prefix = "/transfers",
+      .url_prefix = "/transfers/",
       .method = MHD_HTTP_METHOD_DELETE,
       .allow_deleted_instance = true,
       .handler = &TMH_private_delete_transfers_ID,
diff --git a/src/include/taler_merchant_testing_lib.h 
b/src/include/taler_merchant_testing_lib.h
index 51dbb856..73a1be05 100644
--- a/src/include/taler_merchant_testing_lib.h
+++ b/src/include/taler_merchant_testing_lib.h
@@ -996,6 +996,30 @@ TALER_TESTING_cmd_merchant_post_transfer (
   ...);
 
 
+/**
+ * Define a POST /transfers CMD.  Details like the WTID and
+ * other required parameters are explicitly provided.
+ *
+ * @param label command label.
+ * @param merchant_url base URL of the backend
+ * @param payto_uri URL of the exchange's bank account
+ * @param credit_amount amount credited
+ * @param wtid wire transfer ID to use, NULL to pick one at random
+ * @param exchange_url URL of the exchange to use
+ * @param http_code expected HTTP response code
+ * @return the command.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_merchant_post_transfer2 (
+  const char *label,
+  const char *merchant_url,
+  const char *payto_uri,
+  const char *credit_amount,
+  const char *wtid,
+  const char *exchange_url,
+  unsigned int http_code);
+
+
 /**
  * We have discovered the @a serial for a POST transfer
  * command. Store it (for the bank row trait).
diff --git a/src/lib/merchant_api_post_transfers.c 
b/src/lib/merchant_api_post_transfers.c
index e78cb36d..3a775b90 100644
--- a/src/lib/merchant_api_post_transfers.c
+++ b/src/lib/merchant_api_post_transfers.c
@@ -209,6 +209,12 @@ handle_post_transfers_finished (void *cls,
     hr.ec = TALER_JSON_get_error_code (json);
     hr.hint = TALER_JSON_get_error_hint (json);
     break;
+  case MHD_HTTP_GATEWAY_TIMEOUT:
+    /* Server had an internal issue; we should retry, but this API
+       leaves this to the application */
+    hr.ec = TALER_JSON_get_error_code (json);
+    hr.hint = TALER_JSON_get_error_hint (json);
+    break;
   default:
     /* unexpected response code */
     GNUNET_break_op (0);
diff --git a/src/testing/test_merchant_api.c b/src/testing/test_merchant_api.c
index 797d2005..17573ec2 100644
--- a/src/testing/test_merchant_api.c
+++ b/src/testing/test_merchant_api.c
@@ -440,12 +440,24 @@ run (void *cls,
                                               MHD_HTTP_OK,
                                               "deposit-simple",
                                               NULL),
+    TALER_TESTING_cmd_merchant_post_transfer2 ("post-transfer-bad",
+                                               merchant_url,
+                                               PAYTO_I1,
+                                               "EUR:4.98",
+                                               NULL /* random WTID */,
+                                               "http://localhost/404/";,
+                                               MHD_HTTP_GATEWAY_TIMEOUT),
     TALER_TESTING_cmd_merchant_get_transfers ("get-transfers-1",
                                               merchant_url,
                                               PAYTO_I1,
                                               MHD_HTTP_OK,
                                               "post-transfer-1",
+                                              "post-transfer-bad",
                                               NULL),
+    TALER_TESTING_cmd_merchant_delete_transfer ("delete-transfer-1",
+                                                merchant_url,
+                                                "post-transfer-bad",
+                                                MHD_HTTP_NO_CONTENT),
     TALER_TESTING_cmd_merchant_get_order2 ("get-order-merchant-1-2",
                                            merchant_url,
                                            "create-proposal-1",
diff --git a/src/testing/testing_api_cmd_post_transfers.c 
b/src/testing/testing_api_cmd_post_transfers.c
index e78af34e..35c425a3 100644
--- a/src/testing/testing_api_cmd_post_transfers.c
+++ b/src/testing/testing_api_cmd_post_transfers.c
@@ -310,6 +310,8 @@ transfers_cb (void *cls,
     break;
   case MHD_HTTP_NOT_FOUND:
     break;
+  case MHD_HTTP_GATEWAY_TIMEOUT:
+    break;
   default:
     GNUNET_break (0);
     GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -355,6 +357,34 @@ post_transfers_traits (void *cls,
 }
 
 
+/**
+ * Run the "POST /transfers" CMD. First, get the bank history to find
+ * the wtid.
+ *
+ * @param cls closure.
+ * @param cmd command being run now.
+ * @param is interpreter state.
+ */
+static void
+post_transfers_run2 (void *cls,
+                     const struct TALER_TESTING_Command *cmd,
+                     struct TALER_TESTING_Interpreter *is)
+{
+  struct PostTransfersState *pts = cls;
+
+  pts->is = is;
+  pts->pth = TALER_MERCHANT_transfers_post (pts->is->ctx,
+                                            pts->merchant_url,
+                                            &pts->credit_amount,
+                                            &pts->wtid,
+                                            pts->credit_account,
+                                            pts->exchange_url,
+                                            &transfers_cb,
+                                            pts);
+  GNUNET_assert (NULL != pts->pth);
+}
+
+
 /**
  * Callbacks of this type are used to serve the result of asking
  * the bank for the debit transaction history.
@@ -407,6 +437,7 @@ debit_cb (
                                               pts->exchange_url,
                                               &transfers_cb,
                                               pts);
+    GNUNET_assert (NULL != pts->pth);
     return GNUNET_OK;
   }
   if (MHD_HTTP_OK != http_status)
@@ -544,6 +575,54 @@ TALER_TESTING_cmd_merchant_post_transfer (
 }
 
 
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_merchant_post_transfer2 (
+  const char *label,
+  const char *merchant_url,
+  const char *payto_uri,
+  const char *credit_amount,
+  const char *wtid,
+  const char *exchange_url,
+  unsigned int http_code)
+{
+  struct PostTransfersState *pts;
+
+  pts = GNUNET_new (struct PostTransfersState);
+  pts->merchant_url = merchant_url;
+  pts->credit_account = GNUNET_strdup (payto_uri);
+  pts->exchange_url = GNUNET_strdup (exchange_url);
+  GNUNET_assert (GNUNET_OK ==
+                 TALER_string_to_amount (credit_amount,
+                                         &pts->credit_amount));
+  if (NULL == wtid)
+  {
+    GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_NONCE,
+                                &pts->wtid,
+                                sizeof (pts->wtid));
+  }
+  else
+  {
+    GNUNET_assert (GNUNET_OK ==
+                   GNUNET_STRINGS_string_to_data (wtid,
+                                                  strlen (wtid),
+                                                  &pts->wtid,
+                                                  sizeof (pts->wtid)));
+  }
+  pts->http_status = http_code;
+  {
+    struct TALER_TESTING_Command cmd = {
+      .cls = pts,
+      .label = label,
+      .run = &post_transfers_run2,
+      .cleanup = &post_transfers_cleanup,
+      .traits = &post_transfers_traits
+    };
+
+    return cmd;
+  }
+}
+
+
 void
 TALER_TESTING_cmd_merchant_post_transfer_set_serial (
   struct TALER_TESTING_Command *cmd,

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