gnunet-svn
[Top][All Lists]
Advanced

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

[taler-merchant] branch master updated: fixed merchant get order with tr


From: gnunet
Subject: [taler-merchant] branch master updated: fixed merchant get order with transfer status
Date: Tue, 07 Jul 2020 11:52:34 +0200

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

jonathan-buchanan pushed a commit to branch master
in repository merchant.

The following commit(s) were added to refs/heads/master by this push:
     new 5eb0a2e  fixed merchant get order with transfer status
5eb0a2e is described below

commit 5eb0a2e98faecfec89add4845f817548b3fee86b
Author: Jonathan Buchanan <jonathan.russ.buchanan@gmail.com>
AuthorDate: Tue Jul 7 05:52:23 2020 -0400

    fixed merchant get order with transfer status
---
 .../taler-merchant-httpd_private-get-orders-ID.c   | 30 +++++--
 src/include/taler_merchant_testing_lib.h           | 32 ++++++++
 src/lib/merchant_api_merchant_get_order.c          |  4 +-
 src/testing/test_merchant_api.c                    | 13 +++
 src/testing/testing_api_cmd_merchant_get_order.c   | 96 +++++++++++++++++++++-
 5 files changed, 166 insertions(+), 9 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-get-orders-ID.c 
b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
index d637f5c..b6bdb13 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
@@ -332,17 +332,17 @@ gorc_report (struct GetOrderRequestContext *gorc,
     GNUNET_assert (0 ==
                    json_array_append_new (
                      gorc->wire_reports,
-                     json_pack ("{s:I, s:s, s:o, s:I, s:I}",
+                     json_pack ("{s:I, s:s, s:I, s:I,  s:o}",
                                 "code",
                                 (json_int_t) ec,
                                 "hint",
                                 hint,
-                                "coin_pub",
-                                GNUNET_JSON_from_data_auto (coin_pub),
                                 "exchange_ec",
                                 (json_int_t) exchange_hr->ec,
                                 "exchange_hc",
-                                (json_int_t) exchange_hr->http_status)));
+                                (json_int_t) exchange_hr->http_status,
+                                "coin_pub",
+                                GNUNET_JSON_from_data_auto (coin_pub))));
   else
     GNUNET_assert (0 ==
                    json_array_append_new (
@@ -700,7 +700,19 @@ process_transfer_details (void *cls,
   struct GetOrderRequestContext *gorc = cls;
   json_t *wire_details = gorc->wire_details;
   struct TALER_Amount wired;
-
+  struct GNUNET_TIME_Absolute execution_time_round = execution_time;
+
+  /* Compute total amount *wired* */
+  GNUNET_assert (0 <
+                 TALER_amount_add (&gorc->deposits_total,
+                                   &gorc->deposits_total,
+                                   deposit_value));
+  GNUNET_assert (0 <
+                 TALER_amount_add (&gorc->deposit_fees_total,
+                                   &gorc->deposit_fees_total,
+                                   deposit_fee));
+
+  GNUNET_TIME_round_abs (&execution_time_round);
   GNUNET_assert
     (0 <= TALER_amount_subtract (&wired,
                                  deposit_value,
@@ -716,7 +728,7 @@ process_transfer_details (void *cls,
                               "amount",
                               TALER_JSON_from_amount (&wired),
                               "execution_time",
-                              GNUNET_JSON_from_time_abs (execution_time),
+                              GNUNET_JSON_from_time_abs (execution_time_round),
                               "confirmed",
                               transfer_confirmed)));
 }
@@ -956,6 +968,12 @@ TMH_private_get_orders_ID (const struct TMH_RequestHandler 
*rh,
   {
     /* suspend connection, wait for exchange to check wire transfer status 
there */
     gorc->transfer_status_requested = false;   /* only try ONCE */
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_amount_get_zero (TMH_currency,
+                                          &gorc->deposits_total));
+    GNUNET_assert (GNUNET_OK ==
+                   TALER_amount_get_zero (TMH_currency,
+                                          &gorc->deposit_fees_total));
     TMH_db->lookup_deposits_by_order (TMH_db->cls,
                                       gorc->order_serial,
                                       &deposit_cb,
diff --git a/src/include/taler_merchant_testing_lib.h 
b/src/include/taler_merchant_testing_lib.h
index 07d572a..8320100 100644
--- a/src/include/taler_merchant_testing_lib.h
+++ b/src/include/taler_merchant_testing_lib.h
@@ -543,6 +543,38 @@ TALER_TESTING_cmd_merchant_get_order (const char *label,
                                       ...);
 
 
+/**
+ * Define a GET /private/orders/$ORDER_ID CMD.
+ *
+ * @param label the command label
+ * @param merchant_url base URL of the merchant which will
+ *        serve the request.
+ * @param order_reference reference to a command that created an order.
+ * @param paid whether the order has been paid for or not.
+ * @param wired whether the order has been wired or not.
+ * @param transfers NULL-terminated list of labels (const char *) of
+ *        wire transfers (commands) we expect to be aggregated in the order
+ *        (assuming @a http_code is #MHD_HTTP_OK). If @e paid is fale, this
+ *        parameter is ignored.
+ * @param refunded whether the order has been refunded.
+ * @param refunds NULL-terminated list of labels (const char *) of
+ *        refunds (commands) we expect to be aggregated in the order
+ *        (assuming @a http_code is #MHD_HTTP_OK). If @e refunded is false,
+ *        this parameter is ignored.
+ * @param http_status expected HTTP response code for the request.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_merchant_get_order2 (const char *label,
+                                       const char *merchant_url,
+                                       const char *order_reference,
+                                       bool paid,
+                                       bool wired,
+                                       const char **transfers,
+                                       bool refunded,
+                                       const char **refunds,
+                                       unsigned int http_status);
+
+
 /**
  * Start a long poll for GET /private/orders/$ORDER_ID.
  */
diff --git a/src/lib/merchant_api_merchant_get_order.c 
b/src/lib/merchant_api_merchant_get_order.c
index 53811ec..b29823f 100644
--- a/src/lib/merchant_api_merchant_get_order.c
+++ b/src/lib/merchant_api_merchant_get_order.c
@@ -233,12 +233,12 @@ handle_paid (struct TALER_MERCHANT_OrderMerchantGetHandle 
*omgh,
       struct GNUNET_JSON_Specification ispec[] = {
         GNUNET_JSON_spec_uint32 ("code",
                                  &c32),
+        GNUNET_JSON_spec_string ("hint",
+                                 &wr->hint),
         GNUNET_JSON_spec_uint32 ("exchange_ec",
                                  &eec32),
         GNUNET_JSON_spec_uint32 ("exchange_hc",
                                  &ehs32),
-        GNUNET_JSON_spec_string ("hint",
-                                 &wr->hint),
         GNUNET_JSON_spec_fixed_auto ("coin_pub",
                                      &wr->coin_pub),
         GNUNET_JSON_spec_end ()
diff --git a/src/testing/test_merchant_api.c b/src/testing/test_merchant_api.c
index d6630a6..eeaec91 100644
--- a/src/testing/test_merchant_api.c
+++ b/src/testing/test_merchant_api.c
@@ -231,6 +231,10 @@ static void
 run (void *cls,
      struct TALER_TESTING_Interpreter *is)
 {
+  const char *order_1_transfers[] = {
+    "post-transfer-1",
+    NULL
+  };
   struct TALER_TESTING_Command pay[] = {
     /**
      * Move money to the exchange's bank account.
@@ -395,6 +399,15 @@ run (void *cls,
                                               MHD_HTTP_OK,
                                               "post-transfer-1",
                                               NULL),
+    TALER_TESTING_cmd_merchant_get_order2 ("get-order-merchant-1-2",
+                                           merchant_url,
+                                           "create-proposal-1",
+                                           true,
+                                           true,
+                                           order_1_transfers,
+                                           false,
+                                           NULL,
+                                           MHD_HTTP_OK),
     TALER_TESTING_cmd_merchant_delete_order ("delete-order-1",
                                              merchant_url,
                                              "1",
diff --git a/src/testing/testing_api_cmd_merchant_get_order.c 
b/src/testing/testing_api_cmd_merchant_get_order.c
index 76bc75b..cf0263b 100644
--- a/src/testing/testing_api_cmd_merchant_get_order.c
+++ b/src/testing/testing_api_cmd_merchant_get_order.c
@@ -77,6 +77,21 @@ struct MerchantGetOrderState
    * The length of @e refunds.
    */
   unsigned int refunds_length;
+
+  /**
+   * Whether the order was wired or not.
+   */
+  bool wired;
+
+  /**
+   * A NULL-terminated list of transfers associated with this order.
+   */
+  const char **transfers;
+
+  /**
+   * The length of @e transfers.
+   */
+  unsigned int transfers_length;
 };
 
 
@@ -230,6 +245,14 @@ merchant_get_order_cb (
           }
         }
       }
+
+      if (gos->wired != osr->details.paid.wired)
+      {
+        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                    "Order wired does not match\n");
+        TALER_TESTING_interpreter_fail (gos->is);
+        return;
+      }
     }
     break;
   default:
@@ -278,7 +301,7 @@ merchant_get_order_run (void *cls,
                                                 gos->merchant_url,
                                                 order_id,
                                                 NULL,
-                                                false,
+                                                true,
                                                 GNUNET_TIME_UNIT_ZERO,
                                                 &merchant_get_order_cb,
                                                 gos);
@@ -366,6 +389,77 @@ TALER_TESTING_cmd_merchant_get_order (const char *label,
 }
 
 
+/**
+ * Define a GET /private/orders/$ORDER_ID CMD.
+ *
+ * @param label the command label
+ * @param merchant_url base URL of the merchant which will
+ *        serve the request.
+ * @param order_reference reference to a command that created an order.
+ * @param paid whether the order has been paid for or not.
+ * @param wired whether the order has been wired or not.
+ * @param transfers NULL-terminated list of labels (const char *) of
+ *        wire transfers (commands) we expect to be aggregated in the order
+ *        (assuming @a http_code is #MHD_HTTP_OK). If @e paid is fale, this
+ *        parameter is ignored.
+ * @param refunded whether the order has been refunded.
+ * @param refunds NULL-terminated list of labels (const char *) of
+ *        refunds (commands) we expect to be aggregated in the order
+ *        (assuming @a http_code is #MHD_HTTP_OK). If @e refunded is false,
+ *        this parameter is ignored.
+ * @param http_status expected HTTP response code for the request.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_merchant_get_order2 (const char *label,
+                                       const char *merchant_url,
+                                       const char *order_reference,
+                                       bool paid,
+                                       bool wired,
+                                       const char **transfers,
+                                       bool refunded,
+                                       const char **refunds,
+                                       unsigned int http_status)
+{
+  struct MerchantGetOrderState *gos;
+
+  gos = GNUNET_new (struct MerchantGetOrderState);
+  gos->merchant_url = merchant_url;
+  gos->order_reference = order_reference;
+  gos->paid = paid;
+  gos->wired = wired;
+  gos->refunded = refunded;
+  gos->http_status = http_status;
+  /*if (paid)
+  {
+    for (const char *clabel = transfers[0]; clabel != NULL; ++clabel)
+    {
+      GNUNET_array_append (gos->transfers,
+                           gos->transfers_length,
+                           clabel);
+    }
+  }
+  if (refunded)
+  {
+    for (const char *clabel = refunds[0]; clabel != NULL; ++clabel)
+    {
+      GNUNET_array_append (gos->refunds,
+                           gos->refunds_length,
+                           clabel);
+    }
+  }*/
+  {
+    struct TALER_TESTING_Command cmd = {
+      .cls = gos,
+      .label = label,
+      .run = &merchant_get_order_run,
+      .cleanup = &merchant_get_order_cleanup
+    };
+
+    return cmd;
+  }
+}
+
+
 struct MerchantPollOrderConcludeState
 {
   /**

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