fix fakebank logic
This commit is contained in:
parent
1fc8fd22dc
commit
14ab704cde
@ -40,11 +40,6 @@ struct TALER_BANK_DebitHistoryHandle
|
|||||||
*/
|
*/
|
||||||
char *request_url;
|
char *request_url;
|
||||||
|
|
||||||
/**
|
|
||||||
* The base URL of the bank.
|
|
||||||
*/
|
|
||||||
char *bank_base_url;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle for the request.
|
* Handle for the request.
|
||||||
*/
|
*/
|
||||||
@ -220,7 +215,7 @@ handle_history_finished (void *cls,
|
|||||||
* Request the debit history of the exchange's bank account.
|
* Request the debit history of the exchange's bank account.
|
||||||
*
|
*
|
||||||
* @param ctx curl context for the event loop
|
* @param ctx curl context for the event loop
|
||||||
* @param bank_base_url URL of the base INCLUDING account number
|
* @param account_base_url URL of the base INCLUDING account number
|
||||||
* @param auth authentication data to use
|
* @param auth authentication data to use
|
||||||
* @param start_row from which row on do we want to get results,
|
* @param start_row from which row on do we want to get results,
|
||||||
* use UINT64_MAX for the latest; exclusive
|
* use UINT64_MAX for the latest; exclusive
|
||||||
@ -237,7 +232,7 @@ handle_history_finished (void *cls,
|
|||||||
*/
|
*/
|
||||||
struct TALER_BANK_DebitHistoryHandle *
|
struct TALER_BANK_DebitHistoryHandle *
|
||||||
TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
||||||
const char *bank_base_url,
|
const char *account_base_url,
|
||||||
const struct TALER_BANK_AuthenticationData *auth,
|
const struct TALER_BANK_AuthenticationData *auth,
|
||||||
uint64_t start_row,
|
uint64_t start_row,
|
||||||
int64_t num_results,
|
int64_t num_results,
|
||||||
@ -269,8 +264,7 @@ TALER_BANK_debit_history (struct GNUNET_CURL_Context *ctx,
|
|||||||
hh = GNUNET_new (struct TALER_BANK_DebitHistoryHandle);
|
hh = GNUNET_new (struct TALER_BANK_DebitHistoryHandle);
|
||||||
hh->hcb = hres_cb;
|
hh->hcb = hres_cb;
|
||||||
hh->hcb_cls = hres_cb_cls;
|
hh->hcb_cls = hres_cb_cls;
|
||||||
hh->bank_base_url = GNUNET_strdup (bank_base_url);
|
hh->request_url = TALER_BANK_path_to_url_ (account_base_url,
|
||||||
hh->request_url = TALER_BANK_path_to_url_ (bank_base_url,
|
|
||||||
url);
|
url);
|
||||||
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
@ -317,7 +311,6 @@ TALER_BANK_debit_history_cancel (struct TALER_BANK_DebitHistoryHandle *hh)
|
|||||||
hh->job = NULL;
|
hh->job = NULL;
|
||||||
}
|
}
|
||||||
GNUNET_free (hh->request_url);
|
GNUNET_free (hh->request_url);
|
||||||
GNUNET_free (hh->bank_base_url);
|
|
||||||
GNUNET_free (hh);
|
GNUNET_free (hh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -951,7 +951,7 @@ handle_debit_history (struct TALER_FAKEBANK_Handle *h,
|
|||||||
char *debit_payto;
|
char *debit_payto;
|
||||||
|
|
||||||
credit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
|
credit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
|
||||||
account);
|
pos->credit_account);
|
||||||
debit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
|
debit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
|
||||||
pos->debit_account);
|
pos->debit_account);
|
||||||
trans = json_pack
|
trans = json_pack
|
||||||
|
@ -73,7 +73,7 @@ run (void *cls,
|
|||||||
&bc.exchange_auth,
|
&bc.exchange_auth,
|
||||||
NULL,
|
NULL,
|
||||||
1),
|
1),
|
||||||
TALER_TESTING_cmd_admin_add_incoming ("debit-1",
|
TALER_TESTING_cmd_admin_add_incoming ("credit-1",
|
||||||
"KUDOS:5.01",
|
"KUDOS:5.01",
|
||||||
bc.exchange_account_url,
|
bc.exchange_account_url,
|
||||||
&bc.exchange_auth,
|
&bc.exchange_auth,
|
||||||
@ -88,12 +88,12 @@ run (void *cls,
|
|||||||
&bc.exchange_auth,
|
&bc.exchange_auth,
|
||||||
NULL,
|
NULL,
|
||||||
5),
|
5),
|
||||||
TALER_TESTING_cmd_admin_add_incoming ("debit-2",
|
TALER_TESTING_cmd_admin_add_incoming ("credit-2",
|
||||||
"KUDOS:3.21",
|
"KUDOS:3.21",
|
||||||
bc.exchange_account_url,
|
bc.exchange_account_url,
|
||||||
&bc.exchange_auth,
|
&bc.exchange_auth,
|
||||||
bc.user42_payto),
|
bc.user42_payto),
|
||||||
TALER_TESTING_cmd_transfer ("credit-2",
|
TALER_TESTING_cmd_transfer ("debit-1",
|
||||||
"KUDOS:3.22",
|
"KUDOS:3.22",
|
||||||
bc.exchange_account_url,
|
bc.exchange_account_url,
|
||||||
&bc.exchange_auth,
|
&bc.exchange_auth,
|
||||||
|
@ -50,7 +50,12 @@ struct History
|
|||||||
/**
|
/**
|
||||||
* URL to free.
|
* URL to free.
|
||||||
*/
|
*/
|
||||||
char *url;
|
char *c_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL to free.
|
||||||
|
*/
|
||||||
|
char *d_url;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -64,6 +69,11 @@ struct HistoryState
|
|||||||
*/
|
*/
|
||||||
const char *account_url;
|
const char *account_url;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Payto URL of the debited account offering the "history" operation.
|
||||||
|
*/
|
||||||
|
char *debit_payto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reference to command defining the
|
* Reference to command defining the
|
||||||
* first row number we want in the result.
|
* first row number we want in the result.
|
||||||
@ -189,8 +199,8 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
struct History *h;
|
struct History *h;
|
||||||
const struct TALER_TESTING_Command *add_incoming_cmd;
|
const struct TALER_TESTING_Command *add_incoming_cmd;
|
||||||
int inc;
|
int inc;
|
||||||
unsigned int start;
|
int start;
|
||||||
unsigned int end;
|
int end;
|
||||||
/* #GNUNET_YES whenever either no 'start' value was given for the history
|
/* #GNUNET_YES whenever either no 'start' value was given for the history
|
||||||
* query, or the given value is found in the list of all the CMDs. */
|
* query, or the given value is found in the list of all the CMDs. */
|
||||||
int ok;
|
int ok;
|
||||||
@ -222,15 +232,15 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
/* AKA 'delta' */
|
/* AKA 'delta' */
|
||||||
if (hs->num_results > 0)
|
if (hs->num_results > 0)
|
||||||
{
|
{
|
||||||
inc = 1; /* _inc_rement */
|
inc = 1; /* _inc_rement: go forwards */
|
||||||
start = 0;
|
start = 0;
|
||||||
end = is->ip - 1;
|
end = is->ip;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
inc = -1;
|
inc = -1; /* decrement: we go backwards */
|
||||||
start = is->ip - 1;
|
start = is->ip - 1;
|
||||||
end = 0;
|
end = -1; /* range is exclusive, do look at 0! */
|
||||||
}
|
}
|
||||||
|
|
||||||
ok = GNUNET_NO;
|
ok = GNUNET_NO;
|
||||||
@ -242,7 +252,11 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
total,
|
total,
|
||||||
4);
|
4);
|
||||||
pos = 0;
|
pos = 0;
|
||||||
for (unsigned int off = start; off != end + inc; off += inc)
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Checking commands %u to %u for debit history\n",
|
||||||
|
start,
|
||||||
|
end);
|
||||||
|
for (int off = start; off != end; off += inc)
|
||||||
{
|
{
|
||||||
const struct TALER_TESTING_Command *cmd = &is->commands[off];
|
const struct TALER_TESTING_Command *cmd = &is->commands[off];
|
||||||
const uint64_t *row_id;
|
const uint64_t *row_id;
|
||||||
@ -250,8 +264,11 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
const char *credit_account;
|
const char *credit_account;
|
||||||
const struct TALER_Amount *amount;
|
const struct TALER_Amount *amount;
|
||||||
const struct TALER_WireTransferIdentifierRawP *wtid;
|
const struct TALER_WireTransferIdentifierRawP *wtid;
|
||||||
const char *account_debit_url;
|
const char *exchange_base_url;
|
||||||
|
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Checking if command %s is relevant for debit history\n",
|
||||||
|
cmd->label);
|
||||||
if ( (GNUNET_OK !=
|
if ( (GNUNET_OK !=
|
||||||
TALER_TESTING_get_trait_bank_row (cmd,
|
TALER_TESTING_get_trait_bank_row (cmd,
|
||||||
&row_id)) ||
|
&row_id)) ||
|
||||||
@ -274,9 +291,12 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
(GNUNET_OK !=
|
(GNUNET_OK !=
|
||||||
TALER_TESTING_get_trait_url (cmd,
|
TALER_TESTING_get_trait_url (cmd,
|
||||||
0,
|
0,
|
||||||
&account_debit_url)) )
|
&exchange_base_url)) )
|
||||||
continue; /* not an event we care about */
|
continue; /* not an event we care about */
|
||||||
/* Seek "/history" starting row. */
|
/* Seek "/history" starting row. */
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Command %s is relevant for debit history!\n",
|
||||||
|
cmd->label);
|
||||||
if ( (NULL != row_id_start) &&
|
if ( (NULL != row_id_start) &&
|
||||||
(*row_id_start == *row_id) &&
|
(*row_id_start == *row_id) &&
|
||||||
(GNUNET_NO == ok) )
|
(GNUNET_NO == ok) )
|
||||||
@ -288,9 +308,15 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
/* when 'start' was _not_ given, then ok == GNUNET_YES */
|
/* when 'start' was _not_ given, then ok == GNUNET_YES */
|
||||||
if (GNUNET_NO == ok)
|
if (GNUNET_NO == ok)
|
||||||
continue; /* skip until we find the marker */
|
continue; /* skip until we find the marker */
|
||||||
if (0 != strcasecmp (hs->account_url,
|
if (0 != strcasecmp (hs->debit_payto,
|
||||||
debit_account))
|
debit_account))
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Account %s does not match desired account %s\n",
|
||||||
|
debit_account,
|
||||||
|
hs->debit_payto);
|
||||||
continue; /* account missmatch */
|
continue; /* account missmatch */
|
||||||
|
}
|
||||||
if (total >= GNUNET_MAX (hs->num_results,
|
if (total >= GNUNET_MAX (hs->num_results,
|
||||||
-hs->num_results) )
|
-hs->num_results) )
|
||||||
{
|
{
|
||||||
@ -306,12 +332,14 @@ build_history (struct TALER_TESTING_Interpreter *is,
|
|||||||
GNUNET_array_grow (h,
|
GNUNET_array_grow (h,
|
||||||
total,
|
total,
|
||||||
pos * 2);
|
pos * 2);
|
||||||
h[pos].url = GNUNET_strdup (credit_account);
|
h[pos].c_url = GNUNET_strdup (credit_account);
|
||||||
h[pos].details.credit_account_url = h[pos].url;
|
h[pos].d_url = GNUNET_strdup (debit_account);
|
||||||
|
h[pos].details.credit_account_url = h[pos].c_url;
|
||||||
|
h[pos].details.debit_account_url = h[pos].d_url;
|
||||||
h[pos].details.amount = *amount;
|
h[pos].details.amount = *amount;
|
||||||
h[pos].row_id = *row_id;
|
h[pos].row_id = *row_id;
|
||||||
h[pos].details.wtid = *wtid;
|
h[pos].details.wtid = *wtid;
|
||||||
h[pos].details.debit_account_url = account_debit_url;
|
h[pos].details.exchange_base_url = exchange_base_url;
|
||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
GNUNET_assert (GNUNET_YES == ok);
|
GNUNET_assert (GNUNET_YES == ok);
|
||||||
@ -539,7 +567,11 @@ history_cleanup (void *cls,
|
|||||||
TALER_BANK_debit_history_cancel (hs->hh);
|
TALER_BANK_debit_history_cancel (hs->hh);
|
||||||
}
|
}
|
||||||
for (unsigned int off = 0; off<hs->total; off++)
|
for (unsigned int off = 0; off<hs->total; off++)
|
||||||
GNUNET_free (hs->h[off].url);
|
{
|
||||||
|
GNUNET_free (hs->h[off].c_url);
|
||||||
|
GNUNET_free (hs->h[off].d_url);
|
||||||
|
}
|
||||||
|
GNUNET_free (hs->debit_payto);
|
||||||
GNUNET_free_non_null (hs->h);
|
GNUNET_free_non_null (hs->h);
|
||||||
GNUNET_free (hs);
|
GNUNET_free (hs);
|
||||||
}
|
}
|
||||||
@ -572,6 +604,7 @@ TALER_TESTING_cmd_bank_debits (const char *label,
|
|||||||
hs->start_row_reference = start_row_reference;
|
hs->start_row_reference = start_row_reference;
|
||||||
hs->num_results = num_results;
|
hs->num_results = num_results;
|
||||||
hs->auth = *auth;
|
hs->auth = *auth;
|
||||||
|
hs->debit_payto = TALER_payto_xtalerbank_make2 (account_url);
|
||||||
|
|
||||||
{
|
{
|
||||||
struct TALER_TESTING_Command cmd = {
|
struct TALER_TESTING_Command cmd = {
|
||||||
|
@ -228,6 +228,11 @@ transfer_run (void *cls,
|
|||||||
void *buf;
|
void *buf;
|
||||||
size_t buf_size;
|
size_t buf_size;
|
||||||
|
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
|
||||||
|
"Transfer of %s from %s to %s\n",
|
||||||
|
TALER_amount2s (&fts->amount),
|
||||||
|
fts->account_debit_url,
|
||||||
|
fts->payto_credit_account);
|
||||||
TALER_BANK_prepare_wire_transfer (fts->payto_credit_account,
|
TALER_BANK_prepare_wire_transfer (fts->payto_credit_account,
|
||||||
&fts->amount,
|
&fts->amount,
|
||||||
fts->exchange_base_url,
|
fts->exchange_base_url,
|
||||||
@ -304,7 +309,7 @@ transfer_traits (void *cls,
|
|||||||
struct TransferState *fts = cls;
|
struct TransferState *fts = cls;
|
||||||
struct TALER_TESTING_Trait traits[] = {
|
struct TALER_TESTING_Trait traits[] = {
|
||||||
TALER_TESTING_make_trait_url (0,
|
TALER_TESTING_make_trait_url (0,
|
||||||
fts->account_debit_url),
|
fts->exchange_base_url),
|
||||||
TALER_TESTING_make_trait_bank_row (&fts->serial_id),
|
TALER_TESTING_make_trait_bank_row (&fts->serial_id),
|
||||||
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
|
TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
|
||||||
fts->payto_credit_account),
|
fts->payto_credit_account),
|
||||||
@ -352,7 +357,7 @@ TALER_TESTING_cmd_transfer
|
|||||||
fts = GNUNET_new (struct TransferState);
|
fts = GNUNET_new (struct TransferState);
|
||||||
fts->account_debit_url = account_base_url;
|
fts->account_debit_url = account_base_url;
|
||||||
fts->exchange_base_url = exchange_base_url;
|
fts->exchange_base_url = exchange_base_url;
|
||||||
fts->payto_debit_account = TALER_payto_xtalerbank_make2 (exchange_base_url);
|
fts->payto_debit_account = TALER_payto_xtalerbank_make2 (account_base_url);
|
||||||
fts->payto_credit_account = payto_credit_account;
|
fts->payto_credit_account = payto_credit_account;
|
||||||
fts->auth = *auth;
|
fts->auth = *auth;
|
||||||
fts->wtid = *wtid;
|
fts->wtid = *wtid;
|
||||||
|
Loading…
Reference in New Issue
Block a user