gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: -deduplicate and expand reserve


From: gnunet
Subject: [taler-exchange] branch master updated: -deduplicate and expand reserve history validation logic in testing library
Date: Mon, 23 May 2022 10:36:44 +0200

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 b3844e49 -deduplicate and expand reserve history validation logic in 
testing library
b3844e49 is described below

commit b3844e4923df39b41b8a8d46df173b1432c92364
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon May 23 10:36:39 2022 +0200

    -deduplicate and expand reserve history validation logic in testing library
---
 src/include/taler_exchange_service.h          |   5 --
 src/include/taler_testing_lib.h               |  14 ++++
 src/lib/exchange_api_common.c                 |   4 +-
 src/testing/testing_api_cmd_common.c          | 112 ++++++++++++++++++++++++++
 src/testing/testing_api_cmd_reserve_history.c |  77 +-----------------
 src/testing/testing_api_cmd_reserve_status.c  |  74 +----------------
 6 files changed, 133 insertions(+), 153 deletions(-)

diff --git a/src/include/taler_exchange_service.h 
b/src/include/taler_exchange_service.h
index 5829ebce..afaa2813 100644
--- a/src/include/taler_exchange_service.h
+++ b/src/include/taler_exchange_service.h
@@ -1471,11 +1471,6 @@ struct TALER_EXCHANGE_ReserveHistoryEntry
     struct
     {
 
-      /**
-       * Fee paid for the request.
-       */
-      struct TALER_Amount history_fee;
-
       /**
        * When was the request made.
        */
diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index b0dee023..ff3936cf 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -956,6 +956,20 @@ TALER_TESTING_parse_coin_reference (
   unsigned int *idx);
 
 
+/**
+ * Compare @a h1 and @a h2.
+ *
+ * @param h1 a history entry
+ * @param h2 a history entry
+ * @return 0 if @a h1 and @a h2 are equal
+ */
+int
+TALER_TESTING_history_entry_cmp (const struct
+                                 TALER_EXCHANGE_ReserveHistoryEntry *h1,
+                                 const struct
+                                 TALER_EXCHANGE_ReserveHistoryEntry *h2);
+
+
 /* ************** Specific interpreter commands ************ */
 
 
diff --git a/src/lib/exchange_api_common.c b/src/lib/exchange_api_common.c
index 373989e4..9ef2d3f4 100644
--- a/src/lib/exchange_api_common.c
+++ b/src/lib/exchange_api_common.c
@@ -475,7 +475,7 @@ parse_history (struct TALER_EXCHANGE_ReserveHistoryEntry 
*rh,
     GNUNET_JSON_spec_fixed_auto ("reserve_sig",
                                  &rh->details.history_details.reserve_sig),
     TALER_JSON_spec_amount_any ("history_fee",
-                                &rh->details.history_details.history_fee),
+                                &rh->amount),
     GNUNET_JSON_spec_timestamp ("request_timestamp",
                                 
&rh->details.history_details.request_timestamp),
     GNUNET_JSON_spec_end ()
@@ -493,7 +493,7 @@ parse_history (struct TALER_EXCHANGE_ReserveHistoryEntry 
*rh,
   if (GNUNET_OK !=
       TALER_wallet_reserve_history_verify (
         rh->details.history_details.request_timestamp,
-        &rh->details.history_details.history_fee,
+        &rh->amount,
         uc->reserve_pub,
         &rh->details.history_details.reserve_sig))
   {
diff --git a/src/testing/testing_api_cmd_common.c 
b/src/testing/testing_api_cmd_common.c
index 2d828a2b..1e243937 100644
--- a/src/testing/testing_api_cmd_common.c
+++ b/src/testing/testing_api_cmd_common.c
@@ -25,6 +25,118 @@
 #include "taler_testing_lib.h"
 
 
+int
+TALER_TESTING_history_entry_cmp (const struct
+                                 TALER_EXCHANGE_ReserveHistoryEntry *h1,
+                                 const struct
+                                 TALER_EXCHANGE_ReserveHistoryEntry *h2)
+{
+  if (h1->type != h2->type)
+    return 1;
+  switch (h1->type)
+  {
+  case TALER_EXCHANGE_RTT_CREDIT:
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (0 == strcasecmp (h1->details.in_details.sender_url,
+                           h2->details.in_details.sender_url)) &&
+         (h1->details.in_details.wire_reference ==
+          h2->details.in_details.wire_reference) &&
+         (GNUNET_TIME_timestamp_cmp (h1->details.in_details.timestamp,
+                                     ==,
+                                     h2->details.in_details.timestamp)) )
+      return 0;
+    return 1;
+  case TALER_EXCHANGE_RTT_WITHDRAWAL:
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (0 ==
+          TALER_amount_cmp (&h1->details.withdraw.fee,
+                            &h2->details.withdraw.fee)) )
+      /* testing_api_cmd_withdraw doesn't set the out_authorization_sig,
+         so we cannot test for it here. but if the amount matches,
+         that should be good enough. */
+      return 0;
+    return 1;
+  case TALER_EXCHANGE_RTT_RECOUP:
+    /* exchange_sig, exchange_pub and timestamp are NOT available
+       from the original recoup response, hence here NOT check(able/ed) */
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.recoup_details.coin_pub,
+                         &h2->details.recoup_details.coin_pub)) )
+      return 0;
+    return 1;
+  case TALER_EXCHANGE_RTT_CLOSE:
+    /* testing_api_cmd_exec_closer doesn't set the
+       receiver_account_details, exchange_sig, exchange_pub or wtid or 
timestamp
+       so we cannot test for it here. but if the amount matches,
+       that should be good enough. */
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (0 ==
+          TALER_amount_cmp (&h1->details.close_details.fee,
+                            &h2->details.close_details.fee)) )
+      return 0;
+    return 1;
+  case TALER_EXCHANGE_RTT_HISTORY:
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (GNUNET_TIME_timestamp_cmp (
+            h1->details.history_details.request_timestamp,
+            ==,
+            h2->details.history_details.
+            request_timestamp)) &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.history_details.reserve_sig,
+                         &h2->details.history_details.reserve_sig)) )
+      return 0;
+    return 1;
+  case TALER_EXCHANGE_RTT_MERGE:
+    if ( (0 ==
+          TALER_amount_cmp (&h1->amount,
+                            &h2->amount)) &&
+         (0 ==
+          TALER_amount_cmp (&h1->details.merge_details.purse_fee,
+                            &h2->details.merge_details.purse_fee)) &&
+         (GNUNET_TIME_timestamp_cmp (h1->details.merge_details.merge_timestamp,
+                                     ==,
+                                     
h2->details.merge_details.merge_timestamp))
+         &&
+         (GNUNET_TIME_timestamp_cmp 
(h1->details.merge_details.purse_expiration,
+                                     ==,
+                                     
h2->details.merge_details.purse_expiration))
+         &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.merge_details.merge_pub,
+                         &h2->details.merge_details.merge_pub)) &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.merge_details.h_contract_terms,
+                         &h2->details.merge_details.h_contract_terms)) &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.merge_details.purse_pub,
+                         &h2->details.merge_details.purse_pub)) &&
+         (0 ==
+          GNUNET_memcmp (&h1->details.merge_details.reserve_sig,
+                         &h2->details.merge_details.reserve_sig)) &&
+         (h1->details.merge_details.min_age ==
+          h2->details.merge_details.min_age) &&
+         (h1->details.merge_details.flags ==
+          h2->details.merge_details.flags) )
+      return 0;
+    return 1;
+  }
+  GNUNET_assert (0);
+  return 1;
+}
+
+
 enum GNUNET_GenericReturnValue
 TALER_TESTING_parse_coin_reference (
   const char *coin_reference,
diff --git a/src/testing/testing_api_cmd_reserve_history.c 
b/src/testing/testing_api_cmd_reserve_history.c
index fc94d844..e7918064 100644
--- a/src/testing/testing_api_cmd_reserve_history.c
+++ b/src/testing/testing_api_cmd_reserve_history.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2014-2020 Taler Systems SA
+  Copyright (C) 2014-2022 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as
@@ -70,76 +70,6 @@ struct HistoryState
 };
 
 
-/**
- * Compare @a h1 and @a h2.
- *
- * @param h1 a history entry
- * @param h2 a history entry
- * @return 0 if @a h1 and @a h2 are equal
- */
-static int
-history_entry_cmp (const struct TALER_EXCHANGE_ReserveHistoryEntry *h1,
-                   const struct TALER_EXCHANGE_ReserveHistoryEntry *h2)
-{
-  if (h1->type != h2->type)
-    return 1;
-  switch (h1->type)
-  {
-  case TALER_EXCHANGE_RTT_CREDIT:
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 == strcasecmp (h1->details.in_details.sender_url,
-                           h2->details.in_details.sender_url)) &&
-         (h1->details.in_details.wire_reference ==
-          h2->details.in_details.wire_reference) &&
-         (GNUNET_TIME_timestamp_cmp (h1->details.in_details.timestamp,
-                                     ==,
-                                     h2->details.in_details.timestamp)) )
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_WITHDRAWAL:
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          TALER_amount_cmp (&h1->details.withdraw.fee,
-                            &h2->details.withdraw.fee)) )
-      /* testing_api_cmd_withdraw doesn't set the out_authorization_sig,
-         so we cannot test for it here. but if the amount matches,
-         that should be good enough. */
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_RECOUP:
-    /* exchange_sig, exchange_pub and timestamp are NOT available
-       from the original recoup response, hence here NOT check(able/ed) */
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          GNUNET_memcmp (&h1->details.recoup_details.coin_pub,
-                         &h2->details.recoup_details.coin_pub)) )
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_CLOSE:
-    /* testing_api_cmd_exec_closer doesn't set the
-       receiver_account_details, exchange_sig, exchange_pub or wtid or 
timestamp
-       so we cannot test for it here. but if the amount matches,
-       that should be good enough. */
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          TALER_amount_cmp (&h1->details.close_details.fee,
-                            &h2->details.close_details.fee)) )
-      return 0;
-    return 1;
-  }
-  GNUNET_assert (0);
-  return 1;
-}
-
-
 /**
  * Check if @a cmd changed the reserve, if so, find the
  * entry in @a history and set the respective index in @a found
@@ -216,8 +146,8 @@ analyze_command (const struct TALER_ReservePublicKeyP 
*reserve_pub,
       if (found[i])
         continue; /* already found, skip */
       if (0 ==
-          history_entry_cmp (he,
-                             &history[i]))
+          TALER_TESTING_history_entry_cmp (he,
+                                           &history[i]))
       {
         found[i] = GNUNET_YES;
         return GNUNET_OK;
@@ -336,7 +266,6 @@ history_run (void *cls,
   create_reserve
     = TALER_TESTING_interpreter_lookup_command (is,
                                                 ss->reserve_reference);
-
   if (NULL == create_reserve)
   {
     GNUNET_break (0);
diff --git a/src/testing/testing_api_cmd_reserve_status.c 
b/src/testing/testing_api_cmd_reserve_status.c
index 10f3ee99..63f50772 100644
--- a/src/testing/testing_api_cmd_reserve_status.c
+++ b/src/testing/testing_api_cmd_reserve_status.c
@@ -70,76 +70,6 @@ struct StatusState
 };
 
 
-/**
- * Compare @a h1 and @a h2.
- *
- * @param h1 a history entry
- * @param h2 a history entry
- * @return 0 if @a h1 and @a h2 are equal
- */
-static int
-history_entry_cmp (const struct TALER_EXCHANGE_ReserveHistoryEntry *h1,
-                   const struct TALER_EXCHANGE_ReserveHistoryEntry *h2)
-{
-  if (h1->type != h2->type)
-    return 1;
-  switch (h1->type)
-  {
-  case TALER_EXCHANGE_RTT_CREDIT:
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 == strcasecmp (h1->details.in_details.sender_url,
-                           h2->details.in_details.sender_url)) &&
-         (h1->details.in_details.wire_reference ==
-          h2->details.in_details.wire_reference) &&
-         (GNUNET_TIME_timestamp_cmp (h1->details.in_details.timestamp,
-                                     ==,
-                                     h2->details.in_details.timestamp)) )
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_WITHDRAWAL:
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          TALER_amount_cmp (&h1->details.withdraw.fee,
-                            &h2->details.withdraw.fee)) )
-      /* testing_api_cmd_withdraw doesn't set the out_authorization_sig,
-         so we cannot test for it here. but if the amount matches,
-         that should be good enough. */
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_RECOUP:
-    /* exchange_sig, exchange_pub and timestamp are NOT available
-       from the original recoup response, hence here NOT check(able/ed) */
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          GNUNET_memcmp (&h1->details.recoup_details.coin_pub,
-                         &h2->details.recoup_details.coin_pub)) )
-      return 0;
-    return 1;
-  case TALER_EXCHANGE_RTT_CLOSE:
-    /* testing_api_cmd_exec_closer doesn't set the
-       receiver_account_details, exchange_sig, exchange_pub or wtid or 
timestamp
-       so we cannot test for it here. but if the amount matches,
-       that should be good enough. */
-    if ( (0 ==
-          TALER_amount_cmp (&h1->amount,
-                            &h2->amount)) &&
-         (0 ==
-          TALER_amount_cmp (&h1->details.close_details.fee,
-                            &h2->details.close_details.fee)) )
-      return 0;
-    return 1;
-  }
-  GNUNET_assert (0);
-  return 1;
-}
-
-
 /**
  * Check if @a cmd changed the reserve, if so, find the
  * entry in @a history and set the respective index in @a found
@@ -216,8 +146,8 @@ analyze_command (const struct TALER_ReservePublicKeyP 
*reserve_pub,
       if (found[i])
         continue; /* already found, skip */
       if (0 ==
-          history_entry_cmp (he,
-                             &history[i]))
+          TALER_TESTING_history_entry_cmp (he,
+                                           &history[i]))
       {
         found[i] = GNUNET_YES;
         return GNUNET_OK;

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