fix inconsistency in field naming
This commit is contained in:
parent
1647237c2e
commit
17cfbced1d
@ -172,6 +172,7 @@ check_SCRIPTS = \
|
||||
test-auditor.sh \
|
||||
test-revocation.sh
|
||||
|
||||
.NOTPARALLEL:
|
||||
TESTS = $(check_SCRIPTS)
|
||||
|
||||
EXTRA_DIST = \
|
||||
|
@ -781,6 +781,7 @@ main (int argc,
|
||||
char *testname;
|
||||
struct GNUNET_CONFIGURATION_Handle *cfg;
|
||||
|
||||
(void) argc;
|
||||
result = -1;
|
||||
if (NULL == (plugin_name = strrchr (argv[0], (int) '-')))
|
||||
{
|
||||
|
@ -117,6 +117,7 @@ check_SCRIPTS += \
|
||||
test_taler_exchange_httpd_afl.sh
|
||||
endif
|
||||
|
||||
.NOTPARALLEL:
|
||||
TESTS = \
|
||||
$(check_SCRIPTS)
|
||||
|
||||
|
@ -75,6 +75,11 @@ dead_prepare_cb (void *cls,
|
||||
const char *buf,
|
||||
size_t buf_size)
|
||||
{
|
||||
(void) cls;
|
||||
(void) rowid;
|
||||
(void) wire_method;
|
||||
(void) buf;
|
||||
(void) buf_size;
|
||||
GNUNET_assert (0);
|
||||
}
|
||||
|
||||
@ -344,6 +349,12 @@ never_called_cb (void *cls,
|
||||
const struct TALER_TransferPrivateKeyP *tprivs,
|
||||
const struct TALER_TransferPublicKeyP *tp)
|
||||
{
|
||||
(void) cls;
|
||||
(void) num_freshcoins;
|
||||
(void) rrcs;
|
||||
(void) num_tprivs;
|
||||
(void) tprivs;
|
||||
(void) tp;
|
||||
GNUNET_assert (0); /* should never be called! */
|
||||
}
|
||||
|
||||
@ -361,14 +372,15 @@ never_called_cb (void *cls,
|
||||
* @param tpr transfer public key information
|
||||
*/
|
||||
static void
|
||||
check_refresh_reveal_cb (void *cls,
|
||||
uint32_t num_freshcoins,
|
||||
const struct
|
||||
TALER_EXCHANGEDB_RefreshRevealedCoin *rrcs,
|
||||
unsigned int num_tprivs,
|
||||
const struct TALER_TransferPrivateKeyP *tprivsr,
|
||||
const struct TALER_TransferPublicKeyP *tpr)
|
||||
check_refresh_reveal_cb (
|
||||
void *cls,
|
||||
uint32_t num_freshcoins,
|
||||
const struct TALER_EXCHANGEDB_RefreshRevealedCoin *rrcs,
|
||||
unsigned int num_tprivs,
|
||||
const struct TALER_TransferPrivateKeyP *tprivsr,
|
||||
const struct TALER_TransferPublicKeyP *tpr)
|
||||
{
|
||||
(void) cls;
|
||||
/* compare the refresh commit coin arrays */
|
||||
for (unsigned int cnt = 0; cnt < num_freshcoins; cnt++)
|
||||
{
|
||||
@ -426,6 +438,13 @@ audit_refresh_session_cb (void *cls,
|
||||
uint32_t noreveal_index,
|
||||
const struct TALER_RefreshCommitmentP *rc)
|
||||
{
|
||||
(void) cls;
|
||||
(void) rowid;
|
||||
(void) denom_pub;
|
||||
(void) coin_sig;
|
||||
(void) amount_with_fee;
|
||||
(void) noreveal_index;
|
||||
(void) rc;
|
||||
auditor_row_cnt++;
|
||||
return GNUNET_OK;
|
||||
}
|
||||
@ -450,6 +469,8 @@ handle_link_data_cb (void *cls,
|
||||
const struct TALER_TransferPublicKeyP *transfer_pub,
|
||||
const struct TALER_EXCHANGEDB_LinkList *ldl)
|
||||
{
|
||||
(void) cls;
|
||||
(void) transfer_pub;
|
||||
for (const struct TALER_EXCHANGEDB_LinkList *ldlp = ldl;
|
||||
NULL != ldlp;
|
||||
ldlp = ldlp->next)
|
||||
@ -931,6 +952,15 @@ audit_refund_cb (void *cls,
|
||||
uint64_t rtransaction_id,
|
||||
const struct TALER_Amount *amount_with_fee)
|
||||
{
|
||||
(void) cls;
|
||||
(void) rowid;
|
||||
(void) denom_pub;
|
||||
(void) coin_pub;
|
||||
(void) merchant_pub;
|
||||
(void) merchant_sig;
|
||||
(void) h_contract_terms;
|
||||
(void) rtransaction_id;
|
||||
(void) amount_with_fee;
|
||||
auditor_row_cnt++;
|
||||
return GNUNET_OK;
|
||||
}
|
||||
@ -957,6 +987,13 @@ audit_reserve_in_cb (void *cls,
|
||||
uint64_t wire_reference,
|
||||
struct GNUNET_TIME_Absolute execution_date)
|
||||
{
|
||||
(void) cls;
|
||||
(void) rowid;
|
||||
(void) reserve_pub;
|
||||
(void) credit;
|
||||
(void) sender_account_details;
|
||||
(void) wire_reference;
|
||||
(void) execution_date;
|
||||
auditor_row_cnt++;
|
||||
return GNUNET_OK;
|
||||
}
|
||||
@ -985,6 +1022,14 @@ audit_reserve_out_cb (void *cls,
|
||||
struct GNUNET_TIME_Absolute execution_date,
|
||||
const struct TALER_Amount *amount_with_fee)
|
||||
{
|
||||
(void) cls;
|
||||
(void) rowid;
|
||||
(void) h_blind_ev;
|
||||
(void) denom_pub;
|
||||
(void) reserve_pub;
|
||||
(void) reserve_sig;
|
||||
(void) execution_date;
|
||||
(void) amount_with_fee;
|
||||
auditor_row_cnt++;
|
||||
return GNUNET_OK;
|
||||
}
|
||||
|
@ -114,6 +114,8 @@ main (int argc,
|
||||
struct GNUNET_CONFIGURATION_Handle *cfg = NULL;
|
||||
int ret;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
ret = 1;
|
||||
GNUNET_log_setup ("test-exchangedb-auditors",
|
||||
"WARNING",
|
||||
|
@ -49,6 +49,7 @@ dki_iter (void *cls,
|
||||
{
|
||||
const struct TALER_EXCHANGEDB_DenominationKey *exp = cls;
|
||||
|
||||
(void) alias;
|
||||
if (0 != GNUNET_memcmp (&exp->issue,
|
||||
&dki->issue))
|
||||
{
|
||||
@ -124,6 +125,8 @@ main (int argc,
|
||||
int ret;
|
||||
struct GNUNET_TIME_Absolute start;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
ret = 1;
|
||||
GNUNET_log_setup ("test-exchangedb-denomkeys",
|
||||
"WARNING",
|
||||
|
@ -60,6 +60,8 @@ main (int argc,
|
||||
int ret;
|
||||
unsigned int year;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-exchangedb-fees",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -47,6 +47,7 @@ ski_iter (void *cls,
|
||||
{
|
||||
const struct TALER_EXCHANGEDB_PrivateSigningKeyInformationP *exp = cls;
|
||||
|
||||
(void) filename;
|
||||
if (0 != GNUNET_memcmp (ski,
|
||||
exp))
|
||||
{
|
||||
@ -66,6 +67,8 @@ main (int argc,
|
||||
char *tmpfile;
|
||||
int ret;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
ret = 1;
|
||||
tmpfile = NULL;
|
||||
GNUNET_log_setup ("test-exchangedb-signkeys",
|
||||
|
@ -30,7 +30,7 @@
|
||||
* @return 0 on success
|
||||
*/
|
||||
static int
|
||||
test_amount ()
|
||||
test_amount (void)
|
||||
{
|
||||
json_t *j;
|
||||
struct TALER_Amount a1;
|
||||
@ -60,6 +60,8 @@ int
|
||||
main (int argc,
|
||||
const char *const argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-json",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -35,6 +35,8 @@ main (int argc,
|
||||
const char *payto = "payto://x-taler-bank/42";
|
||||
char *p;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-json-wire",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -175,10 +175,11 @@ main (int argc,
|
||||
")"),
|
||||
GNUNET_PQ_EXECUTE_STATEMENT_END
|
||||
};
|
||||
|
||||
struct GNUNET_PQ_Context *conn;
|
||||
int ret;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-pq",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -49,6 +49,7 @@ libtalertesting_la_SOURCES = \
|
||||
testing_api_cmd_batch.c \
|
||||
testing_api_cmd_check_keys.c \
|
||||
testing_api_cmd_deposit.c \
|
||||
testing_api_cmd_deposits_get.c \
|
||||
testing_api_cmd_exec_aggregator.c \
|
||||
testing_api_cmd_exec_auditor-sign.c \
|
||||
testing_api_cmd_exec_closer.c \
|
||||
@ -63,7 +64,7 @@ libtalertesting_la_SOURCES = \
|
||||
testing_api_cmd_sleep.c \
|
||||
testing_api_cmd_stat.c \
|
||||
testing_api_cmd_status.c \
|
||||
testing_api_cmd_track.c \
|
||||
testing_api_cmd_transfer_get.c \
|
||||
testing_api_cmd_wait.c \
|
||||
testing_api_cmd_wire.c \
|
||||
testing_api_cmd_withdraw.c \
|
||||
@ -109,6 +110,7 @@ libtalertesting_la_LIBADD = \
|
||||
|
||||
AM_TESTS_ENVIRONMENT=export TALER_PREFIX=$${TALER_PREFIX:-@libdir@};export PATH=$${TALER_PREFIX:-@prefix@}/bin:$$PATH;
|
||||
|
||||
.NOTPARALLEL:
|
||||
check_PROGRAMS = \
|
||||
test_auditor_api \
|
||||
test_auditor_api_version \
|
||||
|
379
src/testing/testing_api_cmd_deposits_get.c
Normal file
379
src/testing/testing_api_cmd_deposits_get.c
Normal file
@ -0,0 +1,379 @@
|
||||
/*
|
||||
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_deposits_get.c
|
||||
* @brief Implement the testing CMDs for the /deposits/ GET operations.
|
||||
* @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 "track transaction" CMD.
|
||||
*/
|
||||
struct TrackTransactionState
|
||||
{
|
||||
|
||||
/**
|
||||
* If non NULL, will provide a WTID to be compared against
|
||||
* the one returned by the "track transaction" operation.
|
||||
*/
|
||||
const char *bank_transfer_reference;
|
||||
|
||||
/**
|
||||
* The WTID associated by the transaction being tracked.
|
||||
*/
|
||||
struct TALER_WireTransferIdentifierRawP wtid;
|
||||
|
||||
/**
|
||||
* Expected HTTP response code.
|
||||
*/
|
||||
unsigned int expected_response_code;
|
||||
|
||||
/**
|
||||
* Reference to any operation that can provide a transaction.
|
||||
* Will be the transaction to track.
|
||||
*/
|
||||
const char *transaction_reference;
|
||||
|
||||
/**
|
||||
* Index of the coin involved in the transaction. Recall:
|
||||
* at the exchange, the tracking is done _per coin_.
|
||||
*/
|
||||
unsigned int coin_index;
|
||||
|
||||
/**
|
||||
* Handle to the "track transaction" pending operation.
|
||||
*/
|
||||
struct TALER_EXCHANGE_DepositGetHandle *tth;
|
||||
|
||||
/**
|
||||
* Interpreter state.
|
||||
*/
|
||||
struct TALER_TESTING_Interpreter *is;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Checks what is returned by the "track transaction" operation.
|
||||
* Checks that the HTTP response code is acceptable, and - if the
|
||||
* right reference is non NULL - that the wire transfer subject
|
||||
* line matches our expectations.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param http_status HTTP status code we got.
|
||||
* @param ec taler-specific error code.
|
||||
* @param exchange_pub public key of the exchange
|
||||
* @param json original json reply (may include signatures, those
|
||||
* have then been validated already).
|
||||
* @param wtid wire transfer identifier, NULL if exchange did not
|
||||
* execute the transaction yet.
|
||||
* @param execution_time actual or planned execution time for the
|
||||
* wire transfer.
|
||||
* @param coin_contribution contribution to the total amount of
|
||||
* the deposited coin (can be NULL).
|
||||
*/
|
||||
static void
|
||||
deposit_wtid_cb (void *cls,
|
||||
unsigned int http_status,
|
||||
enum TALER_ErrorCode ec,
|
||||
const struct TALER_ExchangePublicKeyP *exchange_pub,
|
||||
const json_t *json,
|
||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||
struct GNUNET_TIME_Absolute execution_time,
|
||||
const struct TALER_Amount *coin_contribution)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
struct TALER_TESTING_Interpreter *is = tts->is;
|
||||
struct TALER_TESTING_Command *cmd = &is->commands[is->ip];
|
||||
|
||||
(void) coin_contribution;
|
||||
(void) exchange_pub;
|
||||
(void) ec;
|
||||
(void) execution_time;
|
||||
tts->tth = NULL;
|
||||
if (tts->expected_response_code != http_status)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
"Unexpected response code %u to command %s in %s:%u\n",
|
||||
http_status,
|
||||
cmd->label,
|
||||
__FILE__,
|
||||
__LINE__);
|
||||
json_dumpf (json, stderr, 0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
switch (http_status)
|
||||
{
|
||||
case MHD_HTTP_OK:
|
||||
tts->wtid = *wtid;
|
||||
if (NULL != tts->bank_transfer_reference)
|
||||
{
|
||||
const struct TALER_TESTING_Command *bank_transfer_cmd;
|
||||
const struct TALER_WireTransferIdentifierRawP *wtid_want;
|
||||
|
||||
/* _this_ wire transfer subject line. */
|
||||
bank_transfer_cmd = TALER_TESTING_interpreter_lookup_command
|
||||
(is, tts->bank_transfer_reference);
|
||||
if (NULL == bank_transfer_cmd)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_wtid
|
||||
(bank_transfer_cmd, 0, &wtid_want))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Compare that expected and gotten subjects match. */
|
||||
if (0 != GNUNET_memcmp (wtid,
|
||||
wtid_want))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MHD_HTTP_ACCEPTED:
|
||||
/* allowed, nothing to check here */
|
||||
break;
|
||||
case MHD_HTTP_NOT_FOUND:
|
||||
/* allowed, nothing to check here */
|
||||
break;
|
||||
default:
|
||||
GNUNET_break (0);
|
||||
break;
|
||||
}
|
||||
TALER_TESTING_interpreter_next (tts->is);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run the command.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param cmd the command to execute.
|
||||
* @param is the interpreter state.
|
||||
*/
|
||||
static void
|
||||
track_transaction_run (void *cls,
|
||||
const struct TALER_TESTING_Command *cmd,
|
||||
struct TALER_TESTING_Interpreter *is)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
const struct TALER_TESTING_Command *transaction_cmd;
|
||||
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
|
||||
struct TALER_CoinSpendPublicKeyP coin_pub;
|
||||
const json_t *contract_terms;
|
||||
const json_t *wire_details;
|
||||
struct GNUNET_HashCode h_wire_details;
|
||||
struct GNUNET_HashCode h_contract_terms;
|
||||
const struct TALER_MerchantPrivateKeyP *merchant_priv;
|
||||
|
||||
(void) cmd;
|
||||
tts->is = is;
|
||||
transaction_cmd
|
||||
= TALER_TESTING_interpreter_lookup_command (tts->is,
|
||||
tts->transaction_reference);
|
||||
if (NULL == transaction_cmd)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_coin_priv (transaction_cmd,
|
||||
tts->coin_index,
|
||||
&coin_priv))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv,
|
||||
&coin_pub.eddsa_pub);
|
||||
|
||||
/* Get the strings.. */
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_wire_details (transaction_cmd,
|
||||
0,
|
||||
&wire_details))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_contract_terms (transaction_cmd,
|
||||
0,
|
||||
&contract_terms))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( (NULL == wire_details) ||
|
||||
(NULL == contract_terms) )
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Should not fail here, json has been parsed already */
|
||||
GNUNET_assert
|
||||
( (GNUNET_OK ==
|
||||
TALER_JSON_merchant_wire_signature_hash (wire_details,
|
||||
&h_wire_details)) &&
|
||||
(GNUNET_OK ==
|
||||
TALER_JSON_hash (contract_terms,
|
||||
&h_contract_terms)) );
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_merchant_priv (transaction_cmd,
|
||||
0,
|
||||
&merchant_priv))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
tts->tth = TALER_EXCHANGE_deposits_get (is->exchange,
|
||||
merchant_priv,
|
||||
&h_wire_details,
|
||||
&h_contract_terms,
|
||||
&coin_pub,
|
||||
&deposit_wtid_cb,
|
||||
tts);
|
||||
GNUNET_assert (NULL != tts->tth);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cleanup the state from a "track transaction" CMD, and possibly
|
||||
* cancel a operation thereof.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param cmd the command which is being cleaned up.
|
||||
*/
|
||||
static void
|
||||
track_transaction_cleanup (void *cls,
|
||||
const struct TALER_TESTING_Command *cmd)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
|
||||
if (NULL != tts->tth)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||
"Command %u (%s) did not complete\n",
|
||||
tts->is->ip,
|
||||
cmd->label);
|
||||
TALER_EXCHANGE_deposits_get_cancel (tts->tth);
|
||||
tts->tth = NULL;
|
||||
}
|
||||
GNUNET_free (tts);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Offer internal data from a "track transaction" CMD.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param[out] ret result (could be anything).
|
||||
* @param trait name of the trait.
|
||||
* @param index index number of the object to offer.
|
||||
* @return #GNUNET_OK on success.
|
||||
*/
|
||||
static int
|
||||
track_transaction_traits (void *cls,
|
||||
const void **ret,
|
||||
const char *trait,
|
||||
unsigned int index)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
struct TALER_TESTING_Trait traits[] = {
|
||||
TALER_TESTING_make_trait_wtid (0, &tts->wtid),
|
||||
TALER_TESTING_trait_end ()
|
||||
};
|
||||
|
||||
return TALER_TESTING_get_trait (traits,
|
||||
ret,
|
||||
trait,
|
||||
index);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a "track transaction" command.
|
||||
*
|
||||
* @param label the command label.
|
||||
* @param transaction_reference reference to a deposit operation,
|
||||
* will be used to get the input data for the track.
|
||||
* @param coin_index index of the coin involved in the transaction.
|
||||
* @param expected_response_code expected HTTP response code.
|
||||
* @param bank_transfer_reference reference to a command that
|
||||
* can offer a WTID so as to check that against what WTID
|
||||
* the tracked operation has. Set as NULL if not needed.
|
||||
* @return the command.
|
||||
*/
|
||||
struct TALER_TESTING_Command
|
||||
TALER_TESTING_cmd_track_transaction (const char *label,
|
||||
const char *transaction_reference,
|
||||
unsigned int coin_index,
|
||||
unsigned int expected_response_code,
|
||||
const char *bank_transfer_reference)
|
||||
{
|
||||
struct TrackTransactionState *tts;
|
||||
|
||||
tts = GNUNET_new (struct TrackTransactionState);
|
||||
tts->transaction_reference = transaction_reference;
|
||||
tts->expected_response_code = expected_response_code;
|
||||
tts->bank_transfer_reference = bank_transfer_reference;
|
||||
tts->coin_index = coin_index;
|
||||
{
|
||||
struct TALER_TESTING_Command cmd = {
|
||||
.cls = tts,
|
||||
.label = label,
|
||||
.run = &track_transaction_run,
|
||||
.cleanup = &track_transaction_cleanup,
|
||||
.traits = &track_transaction_traits
|
||||
};
|
||||
|
||||
return cmd;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* end of testing_api_cmd_deposits_get.c */
|
@ -65,12 +65,12 @@ auditor_sign_run (void *cls,
|
||||
struct TALER_TESTING_Interpreter *is)
|
||||
{
|
||||
struct AuditorSignState *ass = cls;
|
||||
|
||||
struct GNUNET_CONFIGURATION_Handle *cfg;
|
||||
char *test_home_dir;
|
||||
char *exchange_master_pub;
|
||||
struct GNUNET_TIME_Absolute now;
|
||||
|
||||
(void) cmd;
|
||||
cfg = GNUNET_CONFIGURATION_create ();
|
||||
if (GNUNET_OK != GNUNET_CONFIGURATION_load
|
||||
(cfg, ass->config_filename))
|
||||
@ -157,6 +157,7 @@ auditor_sign_cleanup (void *cls,
|
||||
{
|
||||
struct AuditorSignState *ass = cls;
|
||||
|
||||
(void) cmd;
|
||||
if (NULL != ass->auditor_sign_proc)
|
||||
{
|
||||
GNUNET_break (0 == GNUNET_OS_process_kill
|
||||
|
@ -60,6 +60,7 @@ closer_run (void *cls,
|
||||
{
|
||||
struct CloserState *as = cls;
|
||||
|
||||
(void) cmd;
|
||||
as->closer_proc
|
||||
= GNUNET_OS_start_process (GNUNET_NO,
|
||||
GNUNET_OS_INHERIT_STD_ALL,
|
||||
@ -92,6 +93,7 @@ closer_cleanup (void *cls,
|
||||
{
|
||||
struct CloserState *as = cls;
|
||||
|
||||
(void) cmd;
|
||||
if (NULL != as->closer_proc)
|
||||
{
|
||||
GNUNET_break (0 ==
|
||||
|
@ -125,6 +125,7 @@ keyup_cleanup (void *cls,
|
||||
{
|
||||
struct KeyupState *ks = cls;
|
||||
|
||||
(void) cmd;
|
||||
if (NULL != ks->keyup_proc)
|
||||
{
|
||||
GNUNET_break (0 ==
|
||||
|
@ -18,8 +18,8 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file testing/testing_api_cmd_track.c
|
||||
* @brief Implement the testing CMDs for the /track operations.
|
||||
* @file testing/testing_api_cmd_transfer_get.c
|
||||
* @brief Implement the testing CMDs for the /transfer GET operation.
|
||||
* @author Marcello Stanisci
|
||||
*/
|
||||
#include "platform.h"
|
||||
@ -27,52 +27,6 @@
|
||||
#include <gnunet/gnunet_curl_lib.h>
|
||||
#include "taler_testing_lib.h"
|
||||
|
||||
/**
|
||||
* State for a "track transaction" CMD.
|
||||
*/
|
||||
struct TrackTransactionState
|
||||
{
|
||||
|
||||
/**
|
||||
* If non NULL, will provide a WTID to be compared against
|
||||
* the one returned by the "track transaction" operation.
|
||||
*/
|
||||
const char *bank_transfer_reference;
|
||||
|
||||
/**
|
||||
* The WTID associated by the transaction being tracked.
|
||||
*/
|
||||
struct TALER_WireTransferIdentifierRawP wtid;
|
||||
|
||||
/**
|
||||
* Expected HTTP response code.
|
||||
*/
|
||||
unsigned int expected_response_code;
|
||||
|
||||
/**
|
||||
* Reference to any operation that can provide a transaction.
|
||||
* Will be the transaction to track.
|
||||
*/
|
||||
const char *transaction_reference;
|
||||
|
||||
/**
|
||||
* Index of the coin involved in the transaction. Recall:
|
||||
* at the exchange, the tracking is done _per coin_.
|
||||
*/
|
||||
unsigned int coin_index;
|
||||
|
||||
/**
|
||||
* Handle to the "track transaction" pending operation.
|
||||
*/
|
||||
struct TALER_EXCHANGE_DepositGetHandle *tth;
|
||||
|
||||
/**
|
||||
* Interpreter state.
|
||||
*/
|
||||
struct TALER_TESTING_Interpreter *is;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* State for a "track transfer" CMD.
|
||||
*/
|
||||
@ -133,306 +87,6 @@ struct TrackTransferState
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Checks what is returned by the "track transaction" operation.
|
||||
* Checks that the HTTP response code is acceptable, and - if the
|
||||
* right reference is non NULL - that the wire transfer subject
|
||||
* line matches our expectations.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param http_status HTTP status code we got.
|
||||
* @param ec taler-specific error code.
|
||||
* @param exchange_pub public key of the exchange
|
||||
* @param json original json reply (may include signatures, those
|
||||
* have then been validated already).
|
||||
* @param wtid wire transfer identifier, NULL if exchange did not
|
||||
* execute the transaction yet.
|
||||
* @param execution_time actual or planned execution time for the
|
||||
* wire transfer.
|
||||
* @param coin_contribution contribution to the total amount of
|
||||
* the deposited coin (can be NULL).
|
||||
*/
|
||||
static void
|
||||
deposit_wtid_cb (void *cls,
|
||||
unsigned int http_status,
|
||||
enum TALER_ErrorCode ec,
|
||||
const struct TALER_ExchangePublicKeyP *exchange_pub,
|
||||
const json_t *json,
|
||||
const struct TALER_WireTransferIdentifierRawP *wtid,
|
||||
struct GNUNET_TIME_Absolute execution_time,
|
||||
const struct TALER_Amount *coin_contribution)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
struct TALER_TESTING_Interpreter *is = tts->is;
|
||||
struct TALER_TESTING_Command *cmd = &is->commands[is->ip];
|
||||
|
||||
(void) coin_contribution;
|
||||
(void) exchange_pub;
|
||||
tts->tth = NULL;
|
||||
if (tts->expected_response_code != http_status)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
|
||||
"Unexpected response code %u to command %s in %s:%u\n",
|
||||
http_status,
|
||||
cmd->label,
|
||||
__FILE__,
|
||||
__LINE__);
|
||||
json_dumpf (json, stderr, 0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
switch (http_status)
|
||||
{
|
||||
case MHD_HTTP_OK:
|
||||
tts->wtid = *wtid;
|
||||
if (NULL != tts->bank_transfer_reference)
|
||||
{
|
||||
const struct TALER_TESTING_Command *bank_transfer_cmd;
|
||||
const struct TALER_WireTransferIdentifierRawP *wtid_want;
|
||||
|
||||
/* _this_ wire transfer subject line. */
|
||||
bank_transfer_cmd = TALER_TESTING_interpreter_lookup_command
|
||||
(is, tts->bank_transfer_reference);
|
||||
if (NULL == bank_transfer_cmd)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_wtid
|
||||
(bank_transfer_cmd, 0, &wtid_want))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (is);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Compare that expected and gotten subjects match. */
|
||||
if (0 != GNUNET_memcmp (wtid,
|
||||
wtid_want))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case MHD_HTTP_ACCEPTED:
|
||||
/* allowed, nothing to check here */
|
||||
break;
|
||||
case MHD_HTTP_NOT_FOUND:
|
||||
/* allowed, nothing to check here */
|
||||
break;
|
||||
default:
|
||||
GNUNET_break (0);
|
||||
break;
|
||||
}
|
||||
TALER_TESTING_interpreter_next (tts->is);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Run the command.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param cmd the command to execute.
|
||||
* @param is the interpreter state.
|
||||
*/
|
||||
static void
|
||||
track_transaction_run (void *cls,
|
||||
const struct TALER_TESTING_Command *cmd,
|
||||
struct TALER_TESTING_Interpreter *is)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
const struct TALER_TESTING_Command *transaction_cmd;
|
||||
const struct TALER_CoinSpendPrivateKeyP *coin_priv;
|
||||
struct TALER_CoinSpendPublicKeyP coin_pub;
|
||||
const json_t *contract_terms;
|
||||
const json_t *wire_details;
|
||||
struct GNUNET_HashCode h_wire_details;
|
||||
struct GNUNET_HashCode h_contract_terms;
|
||||
const struct TALER_MerchantPrivateKeyP *merchant_priv;
|
||||
|
||||
tts->is = is;
|
||||
transaction_cmd
|
||||
= TALER_TESTING_interpreter_lookup_command (tts->is,
|
||||
tts->transaction_reference);
|
||||
if (NULL == transaction_cmd)
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_coin_priv (transaction_cmd,
|
||||
tts->coin_index,
|
||||
&coin_priv))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
GNUNET_CRYPTO_eddsa_key_get_public (&coin_priv->eddsa_priv,
|
||||
&coin_pub.eddsa_pub);
|
||||
|
||||
/* Get the strings.. */
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_wire_details (transaction_cmd,
|
||||
0,
|
||||
&wire_details))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_contract_terms (transaction_cmd,
|
||||
0,
|
||||
&contract_terms))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( (NULL == wire_details) ||
|
||||
(NULL == contract_terms) )
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Should not fail here, json has been parsed already */
|
||||
GNUNET_assert
|
||||
( (GNUNET_OK ==
|
||||
TALER_JSON_merchant_wire_signature_hash (wire_details,
|
||||
&h_wire_details)) &&
|
||||
(GNUNET_OK ==
|
||||
TALER_JSON_hash (contract_terms,
|
||||
&h_contract_terms)) );
|
||||
|
||||
if (GNUNET_OK !=
|
||||
TALER_TESTING_get_trait_merchant_priv (transaction_cmd,
|
||||
0,
|
||||
&merchant_priv))
|
||||
{
|
||||
GNUNET_break (0);
|
||||
TALER_TESTING_interpreter_fail (tts->is);
|
||||
return;
|
||||
}
|
||||
|
||||
tts->tth = TALER_EXCHANGE_deposits_get (is->exchange,
|
||||
merchant_priv,
|
||||
&h_wire_details,
|
||||
&h_contract_terms,
|
||||
&coin_pub,
|
||||
&deposit_wtid_cb,
|
||||
tts);
|
||||
GNUNET_assert (NULL != tts->tth);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cleanup the state from a "track transaction" CMD, and possibly
|
||||
* cancel a operation thereof.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param cmd the command which is being cleaned up.
|
||||
*/
|
||||
static void
|
||||
track_transaction_cleanup (void *cls,
|
||||
const struct TALER_TESTING_Command *cmd)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
|
||||
if (NULL != tts->tth)
|
||||
{
|
||||
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||
"Command %u (%s) did not complete\n",
|
||||
tts->is->ip,
|
||||
cmd->label);
|
||||
TALER_EXCHANGE_deposits_get_cancel (tts->tth);
|
||||
tts->tth = NULL;
|
||||
}
|
||||
GNUNET_free (tts);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Offer internal data from a "track transaction" CMD.
|
||||
*
|
||||
* @param cls closure.
|
||||
* @param[out] ret result (could be anything).
|
||||
* @param trait name of the trait.
|
||||
* @param index index number of the object to offer.
|
||||
* @return #GNUNET_OK on success.
|
||||
*/
|
||||
static int
|
||||
track_transaction_traits (void *cls,
|
||||
const void **ret,
|
||||
const char *trait,
|
||||
unsigned int index)
|
||||
{
|
||||
struct TrackTransactionState *tts = cls;
|
||||
struct TALER_TESTING_Trait traits[] = {
|
||||
TALER_TESTING_make_trait_wtid (0, &tts->wtid),
|
||||
TALER_TESTING_trait_end ()
|
||||
};
|
||||
|
||||
return TALER_TESTING_get_trait (traits,
|
||||
ret,
|
||||
trait,
|
||||
index);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a "track transaction" command.
|
||||
*
|
||||
* @param label the command label.
|
||||
* @param transaction_reference reference to a deposit operation,
|
||||
* will be used to get the input data for the track.
|
||||
* @param coin_index index of the coin involved in the transaction.
|
||||
* @param expected_response_code expected HTTP response code.
|
||||
* @param bank_transfer_reference reference to a command that
|
||||
* can offer a WTID so as to check that against what WTID
|
||||
* the tracked operation has. Set as NULL if not needed.
|
||||
* @return the command.
|
||||
*/
|
||||
struct TALER_TESTING_Command
|
||||
TALER_TESTING_cmd_track_transaction (const char *label,
|
||||
const char *transaction_reference,
|
||||
unsigned int coin_index,
|
||||
unsigned int expected_response_code,
|
||||
const char *bank_transfer_reference)
|
||||
{
|
||||
struct TrackTransactionState *tts;
|
||||
|
||||
tts = GNUNET_new (struct TrackTransactionState);
|
||||
tts->transaction_reference = transaction_reference;
|
||||
tts->expected_response_code = expected_response_code;
|
||||
tts->bank_transfer_reference = bank_transfer_reference;
|
||||
tts->coin_index = coin_index;
|
||||
{
|
||||
struct TALER_TESTING_Command cmd = {
|
||||
.cls = tts,
|
||||
.label = label,
|
||||
.run = &track_transaction_run,
|
||||
.cleanup = &track_transaction_cleanup,
|
||||
.traits = &track_transaction_traits
|
||||
};
|
||||
|
||||
return cmd;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cleanup the state for a "track transfer" CMD, and possibly
|
||||
* cancel a pending operation thereof.
|
||||
@ -802,4 +456,4 @@ TALER_TESTING_cmd_track_transfer (const char *label,
|
||||
}
|
||||
|
||||
|
||||
/* end of testing_api_cmd_track.c */
|
||||
/* end of testing_api_cmd_gransfer_get.c */
|
@ -84,6 +84,7 @@ wait_service_run (void *cls,
|
||||
const char *url = cmd->cls;
|
||||
char *wget_cmd;
|
||||
|
||||
(void) cls;
|
||||
GNUNET_asprintf (&wget_cmd,
|
||||
"wget -q -t 1 -T 1 %s -o /dev/null -O /dev/null",
|
||||
url);
|
||||
|
@ -86,10 +86,10 @@ wire_cb (void *cls,
|
||||
const struct TALER_EXCHANGE_WireAccount *accounts)
|
||||
{
|
||||
struct WireState *ws = cls;
|
||||
struct TALER_TESTING_Command *cmd = \
|
||||
&ws->is->commands[ws->is->ip];
|
||||
struct TALER_TESTING_Command *cmd = &ws->is->commands[ws->is->ip];
|
||||
struct TALER_Amount expected_fee;
|
||||
|
||||
(void) ec;
|
||||
TALER_LOG_DEBUG ("Checking parsed /wire response\n");
|
||||
ws->wh = NULL;
|
||||
if (ws->expected_response_code != http_status)
|
||||
@ -165,6 +165,8 @@ wire_run (void *cls,
|
||||
struct TALER_TESTING_Interpreter *is)
|
||||
{
|
||||
struct WireState *ws = cls;
|
||||
|
||||
(void) cmd;
|
||||
ws->is = is;
|
||||
ws->wh = TALER_EXCHANGE_wire (is->exchange,
|
||||
&wire_cb,
|
||||
|
@ -520,11 +520,11 @@ TALER_TESTING_cmd_withdraw_amount (const char *label,
|
||||
* @return the command.
|
||||
*/
|
||||
struct TALER_TESTING_Command
|
||||
TALER_TESTING_cmd_withdraw_denomination (const char *label,
|
||||
const char *reserve_reference,
|
||||
const struct
|
||||
TALER_EXCHANGE_DenomPublicKey *dk,
|
||||
unsigned int expected_response_code)
|
||||
TALER_TESTING_cmd_withdraw_denomination (
|
||||
const char *label,
|
||||
const char *reserve_reference,
|
||||
const struct TALER_EXCHANGE_DenomPublicKey *dk,
|
||||
unsigned int expected_response_code)
|
||||
{
|
||||
struct WithdrawState *ws;
|
||||
|
||||
|
@ -34,6 +34,8 @@ main (int argc,
|
||||
struct TALER_Amount r;
|
||||
char *c;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-amout",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -30,7 +30,7 @@
|
||||
* @return 0 on success
|
||||
*/
|
||||
static int
|
||||
test_high_level ()
|
||||
test_high_level (void)
|
||||
{
|
||||
struct GNUNET_CRYPTO_EddsaPrivateKey *pk;
|
||||
struct TALER_CoinSpendPrivateKeyP coin_priv;
|
||||
@ -88,7 +88,7 @@ test_high_level ()
|
||||
* @return 0 on success
|
||||
*/
|
||||
static int
|
||||
test_planchets ()
|
||||
test_planchets (void)
|
||||
{
|
||||
struct TALER_PlanchetSecretsP ps;
|
||||
struct TALER_DenominationPrivateKey dk_priv;
|
||||
@ -127,6 +127,8 @@ int
|
||||
main (int argc,
|
||||
const char *const argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
if (0 != test_high_level ())
|
||||
return 1;
|
||||
if (0 != test_planchets ())
|
||||
|
@ -39,6 +39,8 @@ main (int argc,
|
||||
{
|
||||
char *r;
|
||||
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
GNUNET_log_setup ("test-payto",
|
||||
"WARNING",
|
||||
NULL);
|
||||
|
@ -45,6 +45,8 @@ int
|
||||
main (int argc,
|
||||
const char *const argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
cf (TALER_urlencode (""), "");
|
||||
cf (TALER_urlencode ("abc"), "abc");
|
||||
cf (TALER_urlencode ("~~"), "~~");
|
||||
|
Loading…
Reference in New Issue
Block a user