aboutsummaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-09-18 18:59:53 +0200
committerChristian Grothoff <christian@grothoff.org>2023-09-18 18:59:53 +0200
commit12cff1b4439ab5dcc26fcf79e19518ae1bdce069 (patch)
treeb2ba500293a986475a66cde99a8bdb28e84368aa /src/testing
parent612828b7ef2299769a5b525a0fbf031858edc4f4 (diff)
downloadexchange-12cff1b4439ab5dcc26fcf79e19518ae1bdce069.tar.xz
remove coin and reserve histories from exchange replies
Diffstat (limited to 'src/testing')
-rw-r--r--src/testing/Makefile.am1
-rw-r--r--src/testing/test_exchange_api.c6
-rw-r--r--src/testing/test_exchange_p2p.c4
-rw-r--r--src/testing/test_kyc_api.c4
-rw-r--r--src/testing/testing_api_cmd_common.c13
-rw-r--r--src/testing/testing_api_cmd_reserve_history.c31
-rw-r--r--src/testing/testing_api_cmd_reserve_status.c397
7 files changed, 8 insertions, 448 deletions
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 957f028d9..3a4f06323 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -100,7 +100,6 @@ libtalertesting_la_SOURCES = \
testing_api_cmd_reserve_history.c \
testing_api_cmd_reserve_open.c \
testing_api_cmd_reserve_purse.c \
- testing_api_cmd_reserve_status.c \
testing_api_cmd_revoke.c \
testing_api_cmd_revoke_denom_key.c \
testing_api_cmd_revoke_sign_key.c \
diff --git a/src/testing/test_exchange_api.c b/src/testing/test_exchange_api.c
index 41b8301a3..e3ef5a5bb 100644
--- a/src/testing/test_exchange_api.c
+++ b/src/testing/test_exchange_api.c
@@ -1154,12 +1154,8 @@ run (void *cls,
MHD_HTTP_OK),
TALER_TESTING_cmd_reserve_history ("history-batch-1",
"create-batch-reserve-1",
- "EUR:0",
+ "EUR:0.01",
MHD_HTTP_OK),
- TALER_TESTING_cmd_status ("status-batch-2",
- "create-batch-reserve-1",
- "EUR:0.0",
- MHD_HTTP_OK),
/**
* Spend the coins.
*/
diff --git a/src/testing/test_exchange_p2p.c b/src/testing/test_exchange_p2p.c
index 2fd7dfb29..6f25dd2b0 100644
--- a/src/testing/test_exchange_p2p.c
+++ b/src/testing/test_exchange_p2p.c
@@ -202,7 +202,7 @@ run (void *cls,
"EUR:1.02",
MHD_HTTP_OK),
/* POST history doesn't yet support P2P transfers */
- TALER_TESTING_cmd_reserve_status (
+ TALER_TESTING_cmd_reserve_history (
"push-check-post-merge-reserve-balance-post",
"create-reserve-1",
"EUR:1.02",
@@ -256,7 +256,7 @@ run (void *cls,
"create-reserve-1",
"EUR:2.01",
MHD_HTTP_OK),
- TALER_TESTING_cmd_reserve_status (
+ TALER_TESTING_cmd_reserve_history (
"push-check-post-merge-reserve-balance-post",
"create-reserve-1",
"EUR:2.01",
diff --git a/src/testing/test_kyc_api.c b/src/testing/test_kyc_api.c
index 5f51b86e8..71f1216a0 100644
--- a/src/testing/test_kyc_api.c
+++ b/src/testing/test_kyc_api.c
@@ -335,7 +335,7 @@ run (void *cls,
"p2p_create-reserve-1",
"EUR:1.03",
MHD_HTTP_OK),
- TALER_TESTING_cmd_reserve_status (
+ TALER_TESTING_cmd_reserve_history (
"push-check-post-merge-reserve-balance-post",
"p2p_create-reserve-1",
"EUR:1.03",
@@ -399,7 +399,7 @@ run (void *cls,
"p2p_create-reserve-3",
"EUR:1.02",
MHD_HTTP_OK),
- TALER_TESTING_cmd_reserve_status (
+ TALER_TESTING_cmd_reserve_history (
"push-check-post-merge-reserve-balance-post",
"p2p_create-reserve-3",
"EUR:1.02",
diff --git a/src/testing/testing_api_cmd_common.c b/src/testing/testing_api_cmd_common.c
index 2c29f4ec2..9ed0f16b6 100644
--- a/src/testing/testing_api_cmd_common.c
+++ b/src/testing/testing_api_cmd_common.c
@@ -97,19 +97,6 @@ TALER_TESTING_history_entry_cmp (
&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,
diff --git a/src/testing/testing_api_cmd_reserve_history.c b/src/testing/testing_api_cmd_reserve_history.c
index ff0a8a554..4b08e78e8 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-2022 Taler Systems SA
+ Copyright (C) 2014-2023 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
@@ -65,12 +65,6 @@ struct HistoryState
struct TALER_TESTING_Interpreter *is;
/**
- * Reserve history entry that corresponds to this operation.
- * Will be of type #TALER_EXCHANGE_RTT_HISTORY.
- */
- struct TALER_EXCHANGE_ReserveHistoryEntry reserve_history;
-
- /**
* Expected HTTP response code.
*/
unsigned int expected_response_code;
@@ -232,21 +226,6 @@ reserve_history_cb (void *cls,
struct TALER_Amount eb;
ss->rsh = NULL;
- if (MHD_HTTP_OK == rs->hr.http_status)
- {
- struct TALER_EXCHANGE_Keys *keys;
- const struct TALER_EXCHANGE_GlobalFee *gf;
-
- ss->reserve_history.type = TALER_EXCHANGE_RTT_HISTORY;
- keys = TALER_TESTING_get_keys (is);
- GNUNET_assert (NULL != keys);
- gf = TALER_EXCHANGE_get_global_fee (keys,
- rs->ts);
- GNUNET_assert (NULL != gf);
- ss->reserve_history.amount = gf->fees.history;
- ss->reserve_history.details.history_details.request_timestamp = rs->ts;
- ss->reserve_history.details.history_details.reserve_sig = *rs->reserve_sig;
- }
if (ss->expected_response_code != rs->hr.http_status)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -366,6 +345,7 @@ history_run (void *cls,
TALER_TESTING_get_exchange_url (is),
TALER_TESTING_get_keys (is),
ss->reserve_priv,
+ 0,
&reserve_history_cb,
ss);
}
@@ -388,16 +368,11 @@ history_traits (void *cls,
{
struct HistoryState *hs = cls;
struct TALER_TESTING_Trait traits[] = {
- /* history entry MUST be first due to response code logic below! */
- TALER_TESTING_make_trait_reserve_history (0,
- &hs->reserve_history),
TALER_TESTING_make_trait_reserve_pub (&hs->reserve_pub),
TALER_TESTING_trait_end ()
};
- return TALER_TESTING_get_trait ((hs->expected_response_code == MHD_HTTP_OK)
- ? &traits[0] /* we have reserve history */
- : &traits[1], /* skip reserve history */
+ return TALER_TESTING_get_trait (traits,
ret,
trait,
index);
diff --git a/src/testing/testing_api_cmd_reserve_status.c b/src/testing/testing_api_cmd_reserve_status.c
deleted file mode 100644
index 2438b2c21..000000000
--- a/src/testing/testing_api_cmd_reserve_status.c
+++ /dev/null
@@ -1,397 +0,0 @@
-/*
- This file is part of TALER
- Copyright (C) 2014-2020 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
- published by the Free Software Foundation; either version 3, or
- (at your option) any later version.
-
- TALER is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with TALER; see the file COPYING. If not, see
- <http://www.gnu.org/licenses/>
-*/
-/**
- * @file testing/testing_api_cmd_reserve_status.c
- * @brief Implement the /reserve/$RID/status test command.
- * @author Marcello Stanisci
- */
-#include "platform.h"
-#include "taler_json_lib.h"
-#include <gnunet/gnunet_curl_lib.h>
-#include "taler_testing_lib.h"
-
-
-/**
- * State for a "status" CMD.
- */
-struct StatusState
-{
- /**
- * Label to the command which created the reserve to check,
- * needed to resort the reserve key.
- */
- const char *reserve_reference;
-
- /**
- * Handle to the "reserve status" operation.
- */
- struct TALER_EXCHANGE_ReservesStatusHandle *rsh;
-
- /**
- * Expected reserve balance.
- */
- const char *expected_balance;
-
- /**
- * Private key of the reserve being analyzed.
- */
- const struct TALER_ReservePrivateKeyP *reserve_priv;
-
- /**
- * Public key of the reserve being analyzed.
- */
- struct TALER_ReservePublicKeyP reserve_pub;
-
- /**
- * Expected HTTP response code.
- */
- unsigned int expected_response_code;
-
- /**
- * Interpreter state.
- */
- struct TALER_TESTING_Interpreter *is;
-};
-
-/**
- * Closure for analysis_cb().
- */
-struct AnalysisContext
-{
- /**
- * Reserve public key we are looking at.
- */
- const struct TALER_ReservePublicKeyP *reserve_pub;
-
- /**
- * Length of the @e history array.
- */
- unsigned int history_length;
-
- /**
- * Array of history items to match.
- */
- const struct TALER_EXCHANGE_ReserveHistoryEntry *history;
-
- /**
- * Array of @e history_length of matched entries.
- */
- bool *found;
-
- /**
- * Set to true if an entry could not be found.
- */
- bool failure;
-};
-
-
-/**
- * Check if @a cmd changed the reserve, if so, find the
- * entry in our history and set the respective index in found
- * to true. If the entry is not found, set failure.
- *
- * @param cls our `struct AnalysisContext *`
- * @param cmd command to analyze for impact on history
- */
-static void
-analyze_command (void *cls,
- const struct TALER_TESTING_Command *cmd)
-{
- struct AnalysisContext *ac = cls;
- const struct TALER_ReservePublicKeyP *reserve_pub = ac->reserve_pub;
- const struct TALER_EXCHANGE_ReserveHistoryEntry *history = ac->history;
- unsigned int history_length = ac->history_length;
- bool *found = ac->found;
-
- if (TALER_TESTING_cmd_is_batch (cmd))
- {
- struct TALER_TESTING_Command *cur;
- struct TALER_TESTING_Command *bcmd;
-
- cur = TALER_TESTING_cmd_batch_get_current (cmd);
- if (GNUNET_OK !=
- TALER_TESTING_get_trait_batch_cmds (cmd,
- &bcmd))
- {
- GNUNET_break (0);
- ac->failure = true;
- return;
- }
- for (unsigned int i = 0; NULL != bcmd[i].label; i++)
- {
- struct TALER_TESTING_Command *step = &bcmd[i];
-
- if (step == cur)
- break; /* if *we* are in a batch, make sure not to analyze commands past 'now' */
- analyze_command (ac,
- step);
- if (ac->failure)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Entry for batch step `%s' missing in history\n",
- step->label);
- return;
- }
- }
- return;
- }
-
- {
- const struct TALER_ReservePublicKeyP *rp;
-
- if (GNUNET_OK !=
- TALER_TESTING_get_trait_reserve_pub (cmd,
- &rp))
- return; /* command does nothing for reserves */
- if (0 !=
- GNUNET_memcmp (rp,
- reserve_pub))
- return; /* command affects some _other_ reserve */
- for (unsigned int j = 0; true; j++)
- {
- const struct TALER_EXCHANGE_ReserveHistoryEntry *he;
- bool matched = false;
-
- if (GNUNET_OK !=
- TALER_TESTING_get_trait_reserve_history (cmd,
- j,
- &he))
- {
- /* NOTE: only for debugging... */
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Command `%s' has the reserve_pub trait, but does not reserve history trait\n",
- cmd->label);
- return; /* command does nothing for reserves */
- }
- for (unsigned int i = 0; i<history_length; i++)
- {
- if (found[i])
- continue; /* already found, skip */
- if (0 ==
- TALER_TESTING_history_entry_cmp (he,
- &history[i]))
- {
- found[i] = true;
- matched = true;
- break;
- }
- }
- if (! matched)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Command `%s' reserve history entry #%u not found\n",
- cmd->label,
- j);
- ac->failure = true;
- return;
- }
- }
- }
-}
-
-
-/**
- * Check that the reserve balance and HTTP response code are
- * both acceptable.
- *
- * @param cls closure.
- * @param rs HTTP response details
- */
-static void
-reserve_status_cb (void *cls,
- const struct TALER_EXCHANGE_ReserveStatus *rs)
-{
- struct StatusState *ss = cls;
- struct TALER_TESTING_Interpreter *is = ss->is;
- struct TALER_Amount eb;
-
- ss->rsh = NULL;
- if (ss->expected_response_code != rs->hr.http_status)
- {
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Unexpected HTTP response code: %d in %s:%u\n",
- rs->hr.http_status,
- __FILE__,
- __LINE__);
- json_dumpf (rs->hr.reply,
- stderr,
- JSON_INDENT (2));
- TALER_TESTING_interpreter_fail (ss->is);
- return;
- }
- if (MHD_HTTP_OK != rs->hr.http_status)
- {
- TALER_TESTING_interpreter_next (is);
- return;
- }
- GNUNET_assert (GNUNET_OK ==
- TALER_string_to_amount (ss->expected_balance,
- &eb));
-
- if (0 != TALER_amount_cmp (&eb,
- &rs->details.ok.balance))
- {
- GNUNET_break (0);
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Unexpected amount in reserve: %s\n",
- TALER_amount_to_string (&rs->details.ok.balance));
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "Expected balance of: %s\n",
- TALER_amount_to_string (&eb));
- TALER_TESTING_interpreter_fail (ss->is);
- return;
- }
- {
- bool found[rs->details.ok.history_len];
- struct AnalysisContext ac = {
- .reserve_pub = &ss->reserve_pub,
- .history = rs->details.ok.history,
- .history_length = rs->details.ok.history_len,
- .found = found
- };
-
- memset (found,
- 0,
- sizeof (found));
- TALER_TESTING_iterate (is,
- true,
- &analyze_command,
- &ac);
- if (ac.failure)
- {
- json_dumpf (rs->hr.reply,
- stderr,
- JSON_INDENT (2));
- TALER_TESTING_interpreter_fail (ss->is);
- return;
- }
- for (unsigned int i = 0; i<rs->details.ok.history_len; i++)
- {
- if (found[i])
- continue;
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "History entry at index %u of type %d not justified by command status\n",
- i,
- rs->details.ok.history[i].type);
- json_dumpf (rs->hr.reply,
- stderr,
- JSON_INDENT (2));
- TALER_TESTING_interpreter_fail (ss->is);
- return;
- }
- }
- TALER_TESTING_interpreter_next (is);
-}
-
-
-/**
- * Run the command.
- *
- * @param cls closure.
- * @param cmd the command being executed.
- * @param is the interpreter state.
- */
-static void
-status_run (void *cls,
- const struct TALER_TESTING_Command *cmd,
- struct TALER_TESTING_Interpreter *is)
-{
- struct StatusState *ss = cls;
- const struct TALER_TESTING_Command *create_reserve;
-
- ss->is = is;
- create_reserve
- = TALER_TESTING_interpreter_lookup_command (is,
- ss->reserve_reference);
-
- if (NULL == create_reserve)
- {
- GNUNET_break (0);
- TALER_TESTING_interpreter_fail (is);
- return;
- }
- if (GNUNET_OK !=
- TALER_TESTING_get_trait_reserve_priv (create_reserve,
- &ss->reserve_priv))
- {
- GNUNET_break (0);
- TALER_LOG_ERROR ("Failed to find reserve_priv for status query\n");
- TALER_TESTING_interpreter_fail (is);
- return;
- }
- GNUNET_CRYPTO_eddsa_key_get_public (&ss->reserve_priv->eddsa_priv,
- &ss->reserve_pub.eddsa_pub);
- ss->rsh = TALER_EXCHANGE_reserves_status (
- TALER_TESTING_interpreter_get_context (is),
- TALER_TESTING_get_exchange_url (is),
- TALER_TESTING_get_keys (is),
- ss->reserve_priv,
- &reserve_status_cb,
- ss);
-}
-
-
-/**
- * Cleanup the state from a "reserve status" CMD, and possibly
- * cancel a pending operation thereof.
- *
- * @param cls closure.
- * @param cmd the command which is being cleaned up.
- */
-static void
-status_cleanup (void *cls,
- const struct TALER_TESTING_Command *cmd)
-{
- struct StatusState *ss = cls;
-
- if (NULL != ss->rsh)
- {
- TALER_TESTING_command_incomplete (ss->is,
- cmd->label);
- TALER_EXCHANGE_reserves_status_cancel (ss->rsh);
- ss->rsh = NULL;
- }
- GNUNET_free (ss);
-}
-
-
-struct TALER_TESTING_Command
-TALER_TESTING_cmd_reserve_status (const char *label,
- const char *reserve_reference,
- const char *expected_balance,
- unsigned int expected_response_code)
-{
- struct StatusState *ss;
-
- GNUNET_assert (NULL != reserve_reference);
- ss = GNUNET_new (struct StatusState);
- ss->reserve_reference = reserve_reference;
- ss->expected_balance = expected_balance;
- ss->expected_response_code = expected_response_code;
- {
- struct TALER_TESTING_Command cmd = {
- .cls = ss,
- .label = label,
- .run = &status_run,
- .cleanup = &status_cleanup
- };
-
- return cmd;
- }
-}