summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMS <ms@taler.net>2020-06-01 14:17:05 +0200
committerMS <ms@taler.net>2020-06-01 14:17:05 +0200
commit7f14b23914e43c3062facfd82f4430be218a9b2a (patch)
tree34055670d3bc0472971339852cdcd2d792de2917
parent45943c22c269384b70f33fe16e58ac5b0ed8c492 (diff)
downloadexchange-7f14b23914e43c3062facfd82f4430be218a9b2a.tar.gz
exchange-7f14b23914e43c3062facfd82f4430be218a9b2a.tar.bz2
exchange-7f14b23914e43c3062facfd82f4430be218a9b2a.zip
Nexus testing.
Up to the point where Nexus gets launched and the Exchange user & bank connection get created. The test fails because the bank connection of type "loopback" is not implemented in the nexus yet.
-rw-r--r--contrib/Makefile.am3
-rwxr-xr-xcontrib/taler-nexus-prepare57
-rw-r--r--src/testing/test_bank_api_nexus.conf4
-rw-r--r--src/testing/testing_api_helpers_bank.c16
4 files changed, 69 insertions, 11 deletions
diff --git a/contrib/Makefile.am b/contrib/Makefile.am
index 2e1160f5..b706202d 100644
--- a/contrib/Makefile.am
+++ b/contrib/Makefile.am
@@ -27,7 +27,8 @@ rdata_DATA = \
bin_SCRIPTS = \
taler-bank-manage-testing \
- taler-exchange-revoke
+ taler-exchange-revoke \
+ taler-nexus-prepare
EXTRA_DIST = \
$(bin_SCRIPTS) \
diff --git a/contrib/taler-nexus-prepare b/contrib/taler-nexus-prepare
new file mode 100755
index 00000000..3e30d393
--- /dev/null
+++ b/contrib/taler-nexus-prepare
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# This file is in the public domain.
+
+from requests import get, post
+from subprocess import call
+import base64
+
+USERNAME="Exchange"
+USER_AUTHORIZATION_HEADER = "basic {}".format(
+ base64.b64encode(b"Exchange:x").decode("utf-8")
+)
+
+def assertResponse(response):
+ if response.status_code != 200:
+ print("Test failed on URL: {}".format(response.url))
+ # stdout/stderr from both services is A LOT of text.
+ # Confusing to dump all that to console.
+ print("Check nexus.log and sandbox.log, probably under /tmp")
+ exit(1)
+ # Allows for finer grained checks.
+ return response
+
+# Create a nexus (super-) user
+call(["nexus", "superuser", "Exchange", "--password", "x"])
+# Create a loopback bank connection.
+assertResponse(
+ post(
+ "http://localhost:5001/bank-connections",
+ json=dict(
+ name="my-local",
+ source="new",
+ type="local",
+ data=dict(
+ bankAccount="my-bank-account"
+ )
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)
+# Create a facade
+assertResponse(
+ post(
+ "http://localhost:5001/facades",
+ json=dict(
+ name="my-facade",
+ type="taler-wire-gateway",
+ creator=USERNAME,
+ config=dict(
+ bankAccount="my-bank-account",
+ bankConnection="my-local",
+ reserveTransferLevel="UNUSED",
+ intervalIncremental="UNUSED"
+ )
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)
diff --git a/src/testing/test_bank_api_nexus.conf b/src/testing/test_bank_api_nexus.conf
index 127cfbb8..620e2073 100644
--- a/src/testing/test_bank_api_nexus.conf
+++ b/src/testing/test_bank_api_nexus.conf
@@ -6,11 +6,11 @@ currency = KUDOS
[exchange-account-2]
PAYTO_URI = payto://iban/IBAN/UNUSED
METHOD = x-taler-bank
-WIRE_GATEWAY_URL = http://localhost:5001/facades/made-up-facade-id/taler
+WIRE_GATEWAY_URL = http://localhost:5001/facades/my-facade/taler/
WIRE_GATEWAY_AUTH_METHOD = basic
# the exchange authenticates as the 'admin' user,
# since that makes the test preparation just easier.
-USERNAME = admin
+USERNAME = Exchange
PASSWORD = x
[bank]
diff --git a/src/testing/testing_api_helpers_bank.c b/src/testing/testing_api_helpers_bank.c
index b0d736fe..16073554 100644
--- a/src/testing/testing_api_helpers_bank.c
+++ b/src/testing/testing_api_helpers_bank.c
@@ -106,7 +106,6 @@ TALER_TESTING_has_in_name (const char *prog,
* bank" function to do such tasks. This function is also
* responsible to create the exchange user at Nexus.
*
- * @param config_filename configuration filename. Used to
* @return the process, or NULL if the process could not
* be started.
*/
@@ -117,10 +116,6 @@ TALER_TESTING_run_nexus (const struct TALER_TESTING_BankConfiguration *bc)
unsigned int iter;
char *curl_check_cmd;
- /* make the 'admin' user at nexus; note: this is the user
- under which the exchange will request the services. */
- system ("nexus superuser admin --password x");
-
bank_proc = GNUNET_OS_start_process
(GNUNET_NO,
GNUNET_OS_INHERIT_STD_NONE,
@@ -160,11 +155,16 @@ TALER_TESTING_run_nexus (const struct TALER_TESTING_BankConfiguration *bc)
iter++;
}
while (0 != system (curl_check_cmd));
-
-
GNUNET_free (curl_check_cmd);
fprintf (stderr, "\n");
-
+ // Creates nexus user + bank loopback connection + Taler facade.
+ if (0 != system ("taler-nexus-prepare"))
+ {
+ GNUNET_OS_process_kill (bank_proc, SIGTERM);
+ GNUNET_OS_process_wait (bank_proc);
+ GNUNET_OS_process_destroy (bank_proc);
+ BANK_FAIL ();
+ }
return bank_proc;
}