summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-01-12 22:59:03 +0100
committerChristian Grothoff <christian@grothoff.org>2020-01-12 22:59:03 +0100
commit5b78b3ea86972f55d27f6b06c96f2ce89a20bb78 (patch)
tree1796e684ab4472893fbe0154967dffc341ca03c1 /src/lib
parentca55b5078f1b8331bbe571209beff24c914b6b33 (diff)
downloadexchange-5b78b3ea86972f55d27f6b06c96f2ce89a20bb78.tar.gz
exchange-5b78b3ea86972f55d27f6b06c96f2ce89a20bb78.tar.bz2
exchange-5b78b3ea86972f55d27f6b06c96f2ce89a20bb78.zip
fix build issues
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/Makefile.am2
-rw-r--r--src/lib/test_bank_api.c207
2 files changed, 208 insertions, 1 deletions
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 8ffee92bf..3ba56aeed 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -196,7 +196,7 @@ test_bank_api_with_fakebank_LDADD = \
$(top_builddir)/src/lib/libtalertesting.la \
-ltalerexchange \
-lgnunetutil \
- libtalerbank.la
+ $(top_builddir)/src/bank-lib/libtalerbank.la
test_bank_api_with_pybank_SOURCES = \
test_bank_api.c
diff --git a/src/lib/test_bank_api.c b/src/lib/test_bank_api.c
new file mode 100644
index 000000000..bb62aead8
--- /dev/null
+++ b/src/lib/test_bank_api.c
@@ -0,0 +1,207 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2016-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 bank/test_bank_api.c
+ * @brief testcase to test bank's HTTP API
+ * interface against the fakebank
+ * @author Marcello Stanisci
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "taler_util.h"
+#include "taler_signatures.h"
+#include "taler_bank_service.h"
+#include "taler_exchange_service.h"
+#include <gnunet/gnunet_util_lib.h>
+#include <gnunet/gnunet_curl_lib.h>
+#include <microhttpd.h>
+#include "taler_testing_lib.h"
+#include "taler_testing_bank_lib.h"
+
+
+#define CONFIG_FILE "bank.conf"
+
+/**
+ * Fakebank URL.
+ */
+static char *bank_url;
+
+/**
+ * Account URL.
+ */
+static char *account_url;
+
+/**
+ * payto://-URL of another account.
+ */
+static char *payto_url;
+
+/**
+ * Handle to the Py-bank daemon.
+ */
+static struct GNUNET_OS_Process *bankd;
+
+/**
+ * Authentication data to use.
+ */
+static struct TALER_BANK_AuthenticationData auth;
+
+/**
+ * Flag indicating whether the test is running against the
+ * Fakebank. Set up at runtime.
+ */
+static int with_fakebank;
+
+/**
+ * Main function that will tell the interpreter what commands to
+ * run.
+ *
+ * @param cls closure
+ */
+static void
+run (void *cls,
+ struct TALER_TESTING_Interpreter *is)
+{
+ struct TALER_WireTransferIdentifierRawP wtid;
+ struct TALER_TESTING_Command commands[] = {
+ TALER_TESTING_cmd_bank_credits ("history-0",
+ account_url,
+ &auth,
+ NULL,
+ 1),
+ TALER_TESTING_cmd_admin_add_incoming ("debit-1",
+ "KUDOS:5.01",
+ account_url,
+ &auth,
+ payto_url),
+ TALER_TESTING_cmd_bank_credits ("history-1c",
+ account_url,
+ &auth,
+ NULL,
+ 5),
+ TALER_TESTING_cmd_bank_debits ("history-1d",
+ account_url,
+ &auth,
+ NULL,
+ 5),
+ TALER_TESTING_cmd_admin_add_incoming ("debit-2",
+ "KUDOS:3.21",
+ account_url,
+ &auth,
+ payto_url),
+ TALER_TESTING_cmd_transfer ("credit-2",
+ "KUDOS:3.22",
+ account_url,
+ &auth,
+ payto_url,
+ &wtid,
+ "http://exchange.example.com/"),
+ TALER_TESTING_cmd_bank_debits ("history-2b",
+ account_url,
+ &auth,
+ NULL,
+ 5),
+ TALER_TESTING_cmd_end ()
+ };
+
+ memset (&wtid, 42, sizeof (wtid));
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Bank serves at `%s'\n",
+ bank_url);
+ GNUNET_asprintf (&account_url,
+ "%s/%s",
+ bank_url,
+ "alice");
+ GNUNET_asprintf (&payto_url,
+ "payto://x-taler-bank/%s/%s",
+ bank_url,
+ "bob");
+ // FIXME: init 'auth'!
+ if (GNUNET_YES == with_fakebank)
+ TALER_TESTING_run_with_fakebank (is,
+ commands,
+ bank_url);
+ else
+ TALER_TESTING_run (is,
+ commands);
+}
+
+
+int
+main (int argc,
+ char *const *argv)
+{
+ int rv;
+
+ /* These environment variables get in the way... */
+ unsetenv ("XDG_DATA_HOME");
+ unsetenv ("XDG_CONFIG_HOME");
+ GNUNET_log_setup ("test-bank-api",
+ "DEBUG",
+ NULL);
+
+ with_fakebank = TALER_TESTING_has_in_name (argv[0],
+ "_with_fakebank");
+ if (GNUNET_YES == with_fakebank)
+ {
+ TALER_LOG_DEBUG ("Running against the Fakebank.\n");
+ if (NULL == (bank_url = TALER_TESTING_prepare_fakebank (CONFIG_FILE,
+ "account-1")))
+ {
+ GNUNET_break (0);
+ return 77;
+ }
+ }
+ else
+ {
+ TALER_LOG_DEBUG ("Running against the Pybank.\n");
+ if (NULL == (bank_url = TALER_TESTING_prepare_bank (CONFIG_FILE)))
+ {
+ GNUNET_break (0);
+ return 77;
+ }
+
+ if (NULL == (bankd = TALER_TESTING_run_bank (CONFIG_FILE,
+ bank_url)))
+ {
+ GNUNET_break (0);
+ return 77;
+ }
+ }
+
+ rv = (GNUNET_OK == TALER_TESTING_setup (&run,
+ NULL,
+ CONFIG_FILE,
+ NULL,
+ GNUNET_NO)) ? 0 : 1;
+ if (GNUNET_NO == with_fakebank)
+ {
+
+ GNUNET_OS_process_kill (bankd,
+ SIGKILL);
+ GNUNET_OS_process_wait (bankd);
+ GNUNET_OS_process_destroy (bankd);
+ GNUNET_free (bank_url);
+ }
+
+ return rv;
+}
+
+
+/* end of test_bank_api.c */