diff --git a/.gitignore b/.gitignore index 20d4b52c2..1c3cba8fe 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ GTAGS src/lib/test_exchange_api doc/doxygen/doxygen_sqlite3.db src/bank-lib/test_bank_api +src/bank-lib/test_bank_api_with_fakebank src/exchange-lib/test_exchange_api src/exchange-lib/test_exchange_api_home/.local/share/taler/exchange/live-keys/ src/exchange/taler-exchange-aggregator diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am index fe910fa85..f7f5dd738 100644 --- a/src/bank-lib/Makefile.am +++ b/src/bank-lib/Makefile.am @@ -47,7 +47,8 @@ endif endif check_PROGRAMS = \ - test_bank_api + test_bank_api \ + test_bank_api_with_fakebank TESTS = \ $(check_PROGRAMS) @@ -57,6 +58,19 @@ test_bank_api_SOURCES = \ test_bank_api.c test_bank_api_LDADD = \ libtalerbank.la \ + libfakebank.la \ + $(top_builddir)/src/util/libtalerutil.la \ + -lgnunetcurl \ + -lgnunetutil \ + -ljansson + + +test_bank_api_with_fakebank_SOURCES = \ + test_bank_interpreter.c test_bank_interpreter.h \ + test_bank_api_with_fakebank.c +test_bank_api_with_fakebank_LDADD = \ + libtalerbank.la \ + libfakebank.la \ $(top_builddir)/src/util/libtalerutil.la \ -lgnunetcurl \ -lgnunetutil \ diff --git a/src/bank-lib/test_bank_api_with_fakebank.c b/src/bank-lib/test_bank_api_with_fakebank.c new file mode 100644 index 000000000..102c616a1 --- /dev/null +++ b/src/bank-lib/test_bank_api_with_fakebank.c @@ -0,0 +1,78 @@ +/* + This file is part of TALER + Copyright (C) 2016 GNUnet e.V. + + 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, If not, see +*/ +/** + * @file bank/test_bank_api_with_fakebank.c + * @brief testcase to test bank's HTTP API interface against the fakebank + * @author Christian Grothoff + */ +#include "platform.h" +#include "taler_util.h" +#include "taler_signatures.h" +#include "taler_bank_service.h" +#include +#include +#include +#include "test_bank_interpreter.h" + + +/** + * Main function that will be run by the scheduler. + * + * @param cls closure + */ +static void +run (void *cls) +{ + int *resultp = cls; + static struct TBI_Command commands[] = + { + /* Add EUR:5.01 to account 42 */ + { .oc = TBI_OC_ADMIN_ADD_INCOMING, + .label = "deposit-1", + .expected_response_code = MHD_HTTP_OK, + .details.admin_add_incoming.credit_account_no = 1, + .details.admin_add_incoming.debit_account_no = 2, + .details.admin_add_incoming.amount = "PUDOS:5.01" }, + + { .oc = TBI_OC_END } + }; + + TBI_run_interpreter (resultp, + 8080, + commands); +} + + +/** + * Main function for the testcase for the bank API. + * + * @param argc expected to be 1 + * @param argv expected to only contain the program name + */ +int +main (int argc, + char * const *argv) +{ + int result; + + GNUNET_log_setup ("test-bank-api-with-fakebank", + "WARNING", + NULL); + GNUNET_SCHEDULER_run (&run, &result); + return (GNUNET_OK == result) ? 0 : 1; +} + +/* end of test_bank_api_with_fakebank.c */ diff --git a/src/bank-lib/test_bank_interpreter.c b/src/bank-lib/test_bank_interpreter.c index 8a57c4b62..3247777b3 100644 --- a/src/bank-lib/test_bank_interpreter.c +++ b/src/bank-lib/test_bank_interpreter.c @@ -26,7 +26,7 @@ #include #include #include "test_bank_interpreter.h" - +#include "fakebank.h" /** @@ -69,6 +69,11 @@ struct InterpreterState */ int *resultp; + /** + * Fakebank, or NULL if we are not using the fakebank. + */ + struct FAKEBANK_Handle *fakebank; + /** * Instruction pointer. Tells #interpreter_run() which * instruction to run next. @@ -154,11 +159,11 @@ add_incoming_cb (void *cls, if (cmd->expected_response_code != http_status) { GNUNET_break (0); + fprintf (stderr, + "Unexpected response code %u:\n", + http_status); if (NULL != json) { - fprintf (stderr, - "Unexpected response code %u:\n", - http_status); json_dumpf (json, stderr, 0); fprintf (stderr, "\n"); } @@ -309,6 +314,11 @@ do_shutdown (void *cls) GNUNET_SCHEDULER_cancel (is->task); is->task = NULL; } + if (NULL != is->fakebank) + { + FAKEBANK_stop (is->fakebank); + is->fakebank = NULL; + } GNUNET_CURL_fini (is->ctx); is->ctx = NULL; GNUNET_CURL_gnunet_rc_destroy (is->rc); @@ -331,6 +341,8 @@ TBI_run_interpreter (int *resultp, struct InterpreterState *is; is = GNUNET_new (struct InterpreterState); + if (0 != bank_port) + is->fakebank = FAKEBANK_start (bank_port); is->resultp = resultp; is->commands = commands; is->ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,