finish tests for #4437

This commit is contained in:
Christian Grothoff 2016-05-03 06:15:09 +02:00
parent eabbafc4df
commit f2b7e36269
4 changed files with 93 additions and 14 deletions

View File

@ -42,7 +42,7 @@ run (void *cls)
/* Add EUR:5.01 to account 42 */ /* Add EUR:5.01 to account 42 */
{ .oc = TBI_OC_ADMIN_ADD_INCOMING, { .oc = TBI_OC_ADMIN_ADD_INCOMING,
.label = "deposit-1", .label = "deposit-1",
.expected_response_code = MHD_HTTP_OK, .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
.details.admin_add_incoming.credit_account_no = 1, .details.admin_add_incoming.credit_account_no = 1,
.details.admin_add_incoming.debit_account_no = 2, .details.admin_add_incoming.debit_account_no = 2,
.details.admin_add_incoming.amount = "PUDOS:5.01" }, .details.admin_add_incoming.amount = "PUDOS:5.01" },

View File

@ -39,14 +39,30 @@ run (void *cls)
int *resultp = cls; int *resultp = cls;
static struct TBI_Command commands[] = static struct TBI_Command commands[] =
{ {
/* Add EUR:5.01 to account 42 */ /* Add EUR:5.01 to account 1 */
{ .oc = TBI_OC_ADMIN_ADD_INCOMING, { .oc = TBI_OC_ADMIN_ADD_INCOMING,
.label = "deposit-1", .label = "deposit-1",
.expected_response_code = MHD_HTTP_OK, .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
.details.admin_add_incoming.credit_account_no = 1, .details.admin_add_incoming.credit_account_no = 1,
.details.admin_add_incoming.debit_account_no = 2, .details.admin_add_incoming.debit_account_no = 2,
.details.admin_add_incoming.amount = "PUDOS:5.01" }, .details.admin_add_incoming.amount = "PUDOS:5.01" },
/* Add EUR:3.21 to account 3 */
{ .oc = TBI_OC_ADMIN_ADD_INCOMING,
.label = "deposit-2",
.details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
.details.admin_add_incoming.credit_account_no = 3,
.details.admin_add_incoming.debit_account_no = 2,
.details.admin_add_incoming.amount = "PUDOS:3.21" },
/* check transactions arrived at fakebank */
{ .oc = TBI_OC_EXPECT_TRANSACTION,
.label = "expect-2",
.details.expect_transaction.cmd_ref = "deposit-2" },
{ .oc = TBI_OC_EXPECT_TRANSACTION,
.label = "expect-1",
.details.expect_transaction.cmd_ref = "deposit-1" },
/* check transaction list is now empty */
{ .oc = TBI_OC_EXPECT_TRANSACTIONS_EMPTY,
.label = "expect-empty" },
{ .oc = TBI_OC_END } { .oc = TBI_OC_END }
}; };

View File

@ -96,7 +96,6 @@ fail (struct InterpreterState *is)
} }
#if 0
/** /**
* Find a command by label. * Find a command by label.
* *
@ -127,7 +126,6 @@ find_command (const struct InterpreterState *is,
label); label);
return NULL; return NULL;
} }
#endif
/** /**
@ -156,7 +154,7 @@ add_incoming_cb (void *cls,
struct TBI_Command *cmd = &is->commands[is->ip]; struct TBI_Command *cmd = &is->commands[is->ip];
cmd->details.admin_add_incoming.aih = NULL; cmd->details.admin_add_incoming.aih = NULL;
if (cmd->expected_response_code != http_status) if (cmd->details.admin_add_incoming.expected_response_code != http_status)
{ {
GNUNET_break (0); GNUNET_break (0);
fprintf (stderr, fprintf (stderr,
@ -186,6 +184,8 @@ interpreter_run (void *cls)
{ {
struct InterpreterState *is = cls; struct InterpreterState *is = cls;
struct TBI_Command *cmd = &is->commands[is->ip]; struct TBI_Command *cmd = &is->commands[is->ip];
const struct TBI_Command *ref;
struct TALER_WireTransferIdentifierRawP wtid;
struct TALER_Amount amount; struct TALER_Amount amount;
const struct GNUNET_SCHEDULER_TaskContext *tc; const struct GNUNET_SCHEDULER_TaskContext *tc;
@ -205,7 +205,6 @@ interpreter_run (void *cls)
GNUNET_SCHEDULER_shutdown (); GNUNET_SCHEDULER_shutdown ();
return; return;
case TBI_OC_ADMIN_ADD_INCOMING: case TBI_OC_ADMIN_ADD_INCOMING:
if (GNUNET_OK != if (GNUNET_OK !=
TALER_string_to_amount (cmd->details.admin_add_incoming.amount, TALER_string_to_amount (cmd->details.admin_add_incoming.amount,
&amount)) &amount))
@ -236,6 +235,46 @@ interpreter_run (void *cls)
return; return;
} }
return; return;
case TBI_OC_EXPECT_TRANSACTION:
ref = find_command (is,
cmd->details.expect_transaction.cmd_ref);
GNUNET_assert (GNUNET_OK ==
TALER_string_to_amount (ref->details.admin_add_incoming.amount,
&amount));
if (GNUNET_OK !=
FAKEBANK_check (is->fakebank,
&amount,
ref->details.admin_add_incoming.debit_account_no,
ref->details.admin_add_incoming.credit_account_no,
&wtid))
{
GNUNET_break (0);
fail (is);
return;
}
if (0 != memcmp (&wtid,
&ref->details.admin_add_incoming.wtid,
sizeof (wtid)))
{
GNUNET_break (0);
fail (is);
return;
}
is->ip++;
is->task = GNUNET_SCHEDULER_add_now (&interpreter_run,
is);
return;
case TBI_OC_EXPECT_TRANSACTIONS_EMPTY:
if (GNUNET_OK != FAKEBANK_check_empty (is->fakebank))
{
GNUNET_break (0);
fail (is);
return;
}
is->ip++;
is->task = GNUNET_SCHEDULER_add_now (&interpreter_run,
is);
return;
default: default:
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Unknown instruction %d at %u (%s)\n", "Unknown instruction %d at %u (%s)\n",

View File

@ -42,7 +42,17 @@ enum TBI_OpCode
/** /**
* Add funds to a reserve by (faking) incoming wire transfer. * Add funds to a reserve by (faking) incoming wire transfer.
*/ */
TBI_OC_ADMIN_ADD_INCOMING TBI_OC_ADMIN_ADD_INCOMING,
/**
* Expect that we have received the specified transaction at fakebank.
*/
TBI_OC_EXPECT_TRANSACTION,
/**
* Expect that we have exhaustively gone over all transactions at fakebank.
*/
TBI_OC_EXPECT_TRANSACTIONS_EMPTY
}; };
@ -62,11 +72,6 @@ struct TBI_Command
*/ */
const char *label; const char *label;
/**
* Which response code do we expect for this command?
*/
unsigned int expected_response_code;
/** /**
* Details about the command. * Details about the command.
*/ */
@ -100,6 +105,11 @@ struct TBI_Command
*/ */
struct TALER_WireTransferIdentifierRawP wtid; struct TALER_WireTransferIdentifierRawP wtid;
/**
* Which response code do we expect for this command?
*/
unsigned int expected_response_code;
/** /**
* Set to the API's handle during the operation. * Set to the API's handle during the operation.
*/ */
@ -107,6 +117,20 @@ struct TBI_Command
} admin_add_incoming; } admin_add_incoming;
/**
* If @e opcode is #TBI_OC_EXPECT_TRANSACTION, this
* specifies which transaction we expected.
*/
struct {
/**
* Label of the command of an /admin/add/incoming
* request that we should check was executed.
*/
const char *cmd_ref;
} expect_transaction;
} details; } details;
}; };