gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-exchange] 05/06: Trigger conflicting refunds


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] 05/06: Trigger conflicting refunds
Date: Thu, 17 May 2018 21:29:47 +0200

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

marcello pushed a commit to branch master
in repository exchange.

commit 381ac75ae0a29edb6585cc68fbd2b81b1aeaff85
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu May 17 15:50:50 2018 +0200

    Trigger conflicting refunds
---
 src/exchange-lib/exchange_api_refund.c    |  4 ++++
 src/exchange-lib/test_exchange_api_new.c  |  5 ++++
 src/exchange-lib/testing_api_cmd_refund.c | 39 +++++++++++++++++++++++++++++++
 src/include/taler_testing_lib.h           | 20 ++++++++++++++++
 4 files changed, 68 insertions(+)

diff --git a/src/exchange-lib/exchange_api_refund.c 
b/src/exchange-lib/exchange_api_refund.c
index 1ddf642..c91952f 100644
--- a/src/exchange-lib/exchange_api_refund.c
+++ b/src/exchange-lib/exchange_api_refund.c
@@ -184,6 +184,10 @@ handle_refund_finished (void *cls,
     /* Client request was inconsistent; might be a currency missmatch
        problem.  */
     break;
+  case MHD_HTTP_CONFLICT:
+    /* Two refund requests were made about the same deposit, but
+       carrying different refund transaction ids.  */
+    break;
   case MHD_HTTP_INTERNAL_SERVER_ERROR:
     /* Server had an internal issue; we should retry, but this API
        leaves this to the application */
diff --git a/src/exchange-lib/test_exchange_api_new.c 
b/src/exchange-lib/test_exchange_api_new.c
index eeead78..c5e62a0 100644
--- a/src/exchange-lib/test_exchange_api_new.c
+++ b/src/exchange-lib/test_exchange_api_new.c
@@ -500,6 +500,11 @@ run (void *cls,
       ("refund-ok-double", MHD_HTTP_OK,
        "EUR:5", "EUR:0.01", "deposit-refund-1"),
 
+    /* Previous /refund(s) had id == 0.  */
+    TALER_TESTING_cmd_refund_with_id
+      ("refund-conflicting", MHD_HTTP_CONFLICT,
+       "EUR:5", "EUR:0.01", "deposit-refund-1", 1),
+
     /**
      * Spend 4.99 EUR of the refunded 4.99 EUR coin (1ct gone
      * due to refund) (merchant would receive EUR:4.98 due to
diff --git a/src/exchange-lib/testing_api_cmd_refund.c 
b/src/exchange-lib/testing_api_cmd_refund.c
index d0f48bb..ed3bd7c 100644
--- a/src/exchange-lib/testing_api_cmd_refund.c
+++ b/src/exchange-lib/testing_api_cmd_refund.c
@@ -298,3 +298,42 @@ TALER_TESTING_cmd_refund (const char *label,
 
   return cmd;
 }
+
+/**
+ * Create a /refund test command, allows to specify refund
+ * transaction id.  Mainly used to create conflicting requests.
+ *
+ * @param label command label
+ * @param expected_response_code expected HTTP status code
+ * @param refund_amount the amount to ask a refund for
+ * @param refund_fee expected refund fee
+ * @param coin_reference reference to a command that can
+ *        provide a coin to be refunded.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_refund_with_id
+  (const char *label,
+   unsigned int expected_response_code,
+   const char *refund_amount,
+   const char *refund_fee,
+   const char *coin_reference,
+   uint64_t refund_transaction_id)
+{
+  struct RefundState *rs;
+  struct TALER_TESTING_Command cmd;
+
+  rs = GNUNET_new (struct RefundState);
+
+  rs->expected_response_code = expected_response_code;
+  rs->refund_amount = refund_amount;
+  rs->refund_fee = refund_fee;
+  rs->coin_reference = coin_reference;
+  rs->refund_transaction_id = refund_transaction_id;
+
+  cmd.cls = rs;
+  cmd.label = label;
+  cmd.run = &refund_run;
+  cmd.cleanup = &refund_cleanup;
+
+  return cmd;
+}
diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index 910495e..f7d3cca 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -829,6 +829,26 @@ struct TALER_TESTING_Command
 TALER_TESTING_cmd_check_bank_empty (const char *label);
 
 /**
+ * Create a /refund test command, allows to specify refund
+ * transaction id.
+ *
+ * @param label command label
+ * @param expected_response_code expected HTTP status code
+ * @param refund_amount the amount to ask a refund for
+ * @param refund_fee expected refund fee
+ * @param coin_reference reference to a command that can
+ *        provide a coin to be refunded.
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_refund_with_id
+  (const char *label,
+   unsigned int expected_response_code,
+   const char *refund_amount,
+   const char *refund_fee,
+   const char *deposit_reference,
+   uint64_t refund_transaction_id);
+
+/**
  * Create a /refund test command.
  *
  * @param label command label

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



reply via email to

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