-fix fakebank/tewgc logic and add test case
This commit is contained in:
parent
26e061c212
commit
8a60e6b62f
@ -69,3 +69,13 @@ libtalerfakebank_la_LIBADD = \
|
|||||||
-lmicrohttpd \
|
-lmicrohttpd \
|
||||||
-lpthread \
|
-lpthread \
|
||||||
$(XLIB)
|
$(XLIB)
|
||||||
|
|
||||||
|
check_SCRIPTS = \
|
||||||
|
test_bank.sh
|
||||||
|
|
||||||
|
TESTS = \
|
||||||
|
$(check_SCRIPTS)
|
||||||
|
|
||||||
|
EXTRA_DIST = \
|
||||||
|
$(check_SCRIPTS) \
|
||||||
|
test_bank.conf
|
||||||
|
@ -184,6 +184,21 @@ TALER_BANK_admin_add_incoming (
|
|||||||
json_t *admin_obj;
|
json_t *admin_obj;
|
||||||
CURL *eh;
|
CURL *eh;
|
||||||
|
|
||||||
|
if (NULL == debit_account)
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (NULL == reserve_pub)
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (NULL == amount)
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
admin_obj = GNUNET_JSON_PACK (
|
admin_obj = GNUNET_JSON_PACK (
|
||||||
GNUNET_JSON_pack_data_auto ("reserve_pub",
|
GNUNET_JSON_pack_data_auto ("reserve_pub",
|
||||||
reserve_pub),
|
reserve_pub),
|
||||||
|
@ -1487,7 +1487,18 @@ handle_debit_history (struct TALER_FAKEBANK_Handle *h,
|
|||||||
json_t *trans;
|
json_t *trans;
|
||||||
char *credit_payto;
|
char *credit_payto;
|
||||||
|
|
||||||
GNUNET_assert (T_DEBIT == pos->type);
|
if (T_DEBIT != pos->type)
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||||
|
"Unexpected CREDIT transaction #%llu for account `%s'\n",
|
||||||
|
(unsigned long long) pos->row_id,
|
||||||
|
account);
|
||||||
|
if (0 > ha.delta)
|
||||||
|
pos = pos->prev_in;
|
||||||
|
if (0 < ha.delta)
|
||||||
|
pos = pos->next_in;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
GNUNET_asprintf (&credit_payto,
|
GNUNET_asprintf (&credit_payto,
|
||||||
"payto://x-taler-bank/localhost/%s",
|
"payto://x-taler-bank/localhost/%s",
|
||||||
pos->credit_account->account_name);
|
pos->credit_account->account_name);
|
||||||
@ -1635,7 +1646,18 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h,
|
|||||||
json_t *trans;
|
json_t *trans;
|
||||||
char *debit_payto;
|
char *debit_payto;
|
||||||
|
|
||||||
GNUNET_assert (T_CREDIT == pos->type);
|
if (T_CREDIT != pos->type)
|
||||||
|
{
|
||||||
|
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
|
||||||
|
"Unexpected DEBIT transaction #%llu for account `%s'\n",
|
||||||
|
(unsigned long long) pos->row_id,
|
||||||
|
account);
|
||||||
|
if (0 > ha.delta)
|
||||||
|
pos = pos->prev_in;
|
||||||
|
if (0 < ha.delta)
|
||||||
|
pos = pos->next_in;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
GNUNET_asprintf (&debit_payto,
|
GNUNET_asprintf (&debit_payto,
|
||||||
"payto://x-taler-bank/localhost/%s",
|
"payto://x-taler-bank/localhost/%s",
|
||||||
pos->debit_account->account_name);
|
pos->debit_account->account_name);
|
||||||
|
@ -64,7 +64,7 @@ static char *account_section;
|
|||||||
/**
|
/**
|
||||||
* Starting row.
|
* Starting row.
|
||||||
*/
|
*/
|
||||||
static unsigned long long start_row;
|
static unsigned long long start_row = UINT64_MAX;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authentication data.
|
* Authentication data.
|
||||||
@ -165,7 +165,7 @@ do_shutdown (void *cls)
|
|||||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to
|
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to
|
||||||
* abort iteration
|
* abort iteration
|
||||||
*/
|
*/
|
||||||
static int
|
static enum GNUNET_GenericReturnValue
|
||||||
credit_history_cb (void *cls,
|
credit_history_cb (void *cls,
|
||||||
unsigned int http_status,
|
unsigned int http_status,
|
||||||
enum TALER_ErrorCode ec,
|
enum TALER_ErrorCode ec,
|
||||||
@ -279,7 +279,7 @@ execute_credit_history (void)
|
|||||||
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
||||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
||||||
*/
|
*/
|
||||||
static int
|
static enum GNUNET_GenericReturnValue
|
||||||
debit_history_cb (void *cls,
|
debit_history_cb (void *cls,
|
||||||
unsigned int http_status,
|
unsigned int http_status,
|
||||||
enum TALER_ErrorCode ec,
|
enum TALER_ErrorCode ec,
|
||||||
@ -435,7 +435,7 @@ execute_wire_transfer (void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// See if subject was given as a payto-parameter.
|
/* See if subject was given as a payto-parameter. */
|
||||||
if (NULL == subject)
|
if (NULL == subject)
|
||||||
subject = TALER_payto_get_subject (credit_account);
|
subject = TALER_payto_get_subject (credit_account);
|
||||||
if (NULL != subject)
|
if (NULL != subject)
|
||||||
@ -448,10 +448,9 @@ execute_wire_transfer (void)
|
|||||||
{
|
{
|
||||||
fprintf (stderr,
|
fprintf (stderr,
|
||||||
"Error: wire transfer subject must be a WTID\n");
|
"Error: wire transfer subject must be a WTID\n");
|
||||||
|
GNUNET_SCHEDULER_shutdown ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
GNUNET_SCHEDULER_shutdown ();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -563,7 +562,7 @@ execute_admin_transfer (void)
|
|||||||
&auth,
|
&auth,
|
||||||
&reserve_pub,
|
&reserve_pub,
|
||||||
&amount,
|
&amount,
|
||||||
credit_account,
|
debit_account,
|
||||||
&res_cb,
|
&res_cb,
|
||||||
NULL);
|
NULL);
|
||||||
if (NULL == op)
|
if (NULL == op)
|
||||||
|
10
src/bank-lib/test_bank.conf
Normal file
10
src/bank-lib/test_bank.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[taler]
|
||||||
|
CURRENCY = TESTKUDOS
|
||||||
|
|
||||||
|
[bank]
|
||||||
|
serve = http
|
||||||
|
HTTP_PORT = 8899
|
||||||
|
MAX_DEBT_BANK = TESTKUDOS:0.0
|
||||||
|
MAX_DEBT = TESTKUDOS:50.0
|
||||||
|
|
||||||
|
RAM_LIMIT = 32
|
74
src/bank-lib/test_bank.sh
Executable file
74
src/bank-lib/test_bank.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
# Cleanup to run whenever we exit
|
||||||
|
function cleanup()
|
||||||
|
{
|
||||||
|
for n in `jobs -p`
|
||||||
|
do
|
||||||
|
kill $n 2> /dev/null || true
|
||||||
|
done
|
||||||
|
wait
|
||||||
|
}
|
||||||
|
|
||||||
|
# Install cleanup handler (except for kill -9)
|
||||||
|
trap cleanup EXIT
|
||||||
|
|
||||||
|
echo -n "Launching bank..."
|
||||||
|
|
||||||
|
taler-fakebank-run -c test_bank.conf -L DEBUG &> bank.log &
|
||||||
|
|
||||||
|
# Wait for bank to be available (usually the slowest)
|
||||||
|
for n in `seq 1 50`
|
||||||
|
do
|
||||||
|
echo -n "."
|
||||||
|
sleep 0.2
|
||||||
|
OK=0
|
||||||
|
# bank
|
||||||
|
wget --tries=1 --timeout=1 http://localhost:8899/ -o /dev/null -O /dev/null >/dev/null || continue
|
||||||
|
OK=1
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ 1 != $OK ]
|
||||||
|
then
|
||||||
|
exit_skip "Failed to launch services (bank)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "OK"
|
||||||
|
|
||||||
|
echo -n "Making wire transfer to exchange ..."
|
||||||
|
|
||||||
|
taler-exchange-wire-gateway-client \
|
||||||
|
-b http://localhost:8899/exchange/ \
|
||||||
|
-S 0ZSX8SH0M30KHX8K3Y1DAMVGDQV82XEF9DG1HC4QMQ3QWYT4AF00 \
|
||||||
|
-D payto://x-taler-bank/localhost:8899/user \
|
||||||
|
-a TESTKUDOS:4 > /dev/null
|
||||||
|
echo " OK"
|
||||||
|
|
||||||
|
echo -n "Requesting exchange incoming transaction list ..."
|
||||||
|
|
||||||
|
./taler-exchange-wire-gateway-client -b http://localhost:8899/exchange/ -i | grep TESTKUDOS:4 > /dev/null
|
||||||
|
|
||||||
|
echo " OK"
|
||||||
|
|
||||||
|
echo -n "Making wire transfer from exchange..."
|
||||||
|
|
||||||
|
./taler-exchange-wire-gateway-client \
|
||||||
|
-b http://localhost:8899/exchange/ \
|
||||||
|
-S 0ZSX8SH0M30KHX8K3Y1DAMVGDQV82XEF9DG1HC4QMQ3QWYT4AF00 \
|
||||||
|
-C payto://x-taler-bank/localhost:8899/merchant \
|
||||||
|
-a TESTKUDOS:2 > /dev/null
|
||||||
|
echo " OK"
|
||||||
|
|
||||||
|
|
||||||
|
echo -n "Requesting exchange's outgoing transaction list..."
|
||||||
|
|
||||||
|
./taler-exchange-wire-gateway-client -b http://localhost:8899/exchange/ -o | grep TESTKUDOS:2 > /dev/null
|
||||||
|
|
||||||
|
echo " OK"
|
||||||
|
|
||||||
|
echo "All tests passed"
|
||||||
|
|
||||||
|
exit 0
|
@ -304,8 +304,8 @@ struct TALER_BANK_CreditDetails
|
|||||||
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
||||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
||||||
*/
|
*/
|
||||||
typedef int
|
typedef enum GNUNET_GenericReturnValue
|
||||||
(*TALER_BANK_CreditHistoryCallback) (
|
(*TALER_BANK_CreditHistoryCallback)(
|
||||||
void *cls,
|
void *cls,
|
||||||
unsigned int http_status,
|
unsigned int http_status,
|
||||||
enum TALER_ErrorCode ec,
|
enum TALER_ErrorCode ec,
|
||||||
@ -414,8 +414,8 @@ struct TALER_BANK_DebitDetails
|
|||||||
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
* @param json detailed response from the HTTPD, or NULL if reply was not in JSON
|
||||||
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
* @return #GNUNET_OK to continue, #GNUNET_SYSERR to abort iteration
|
||||||
*/
|
*/
|
||||||
typedef int
|
typedef enum GNUNET_GenericReturnValue
|
||||||
(*TALER_BANK_DebitHistoryCallback) (
|
(*TALER_BANK_DebitHistoryCallback)(
|
||||||
void *cls,
|
void *cls,
|
||||||
unsigned int http_status,
|
unsigned int http_status,
|
||||||
enum TALER_ErrorCode ec,
|
enum TALER_ErrorCode ec,
|
||||||
|
Loading…
Reference in New Issue
Block a user