summaryrefslogtreecommitdiff
path: root/contrib/taler-nexus-prepare
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/taler-nexus-prepare')
-rwxr-xr-xcontrib/taler-nexus-prepare128
1 files changed, 128 insertions, 0 deletions
diff --git a/contrib/taler-nexus-prepare b/contrib/taler-nexus-prepare
new file mode 100755
index 000000000..66a0b1c1e
--- /dev/null
+++ b/contrib/taler-nexus-prepare
@@ -0,0 +1,128 @@
+#!/usr/bin/env python3
+# This file is in the public domain.
+
+from requests import get, post
+from subprocess import call
+import base64
+
+# EBICS details
+EBICS_URL = "http://localhost:5000/ebicsweb"
+HOST_ID = "HOST01"
+PARTNER_ID = "PARTNER1"
+USER_ID = "USER1"
+EBICS_VERSION = "H004"
+
+SUBSCRIBER_IBAN = "ES9121000418450200051332"
+SUBSCRIBER_BIC = "BIC"
+SUBSCRIBER_NAME = "Exchange"
+
+BANK_ACCOUNT_LABEL = "my-bank-account"
+BANK_CONNECTION_LABEL = "my-bank-connection"
+FACADE_LABEL="my-facade"
+
+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
+check_call(["libeufin-nexus",
+ "superuser",
+ "--db-name", "/tmp/nexus-exchange-test.sqlite3",
+ "Exchange",
+ "--password", "x"]
+)
+
+# Create a EBICS bank connection.
+assertResponse(
+ post(
+ "http://localhost:5001/bank-connections",
+ json=dict(
+ name=BANK_CONNECTION_LABEL,
+ source="new",
+ type="ebics",
+ data=dict(
+ ebicsURL=EBICS_URL, hostID=HOST_ID, partnerID=PARTNER_ID, userID=USER_ID
+ ),
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)
+
+# Create a facade
+assertResponse(
+ post(
+ "http://localhost:5001/facades",
+ json=dict(
+ name=FACADE_LABEL,
+ type="taler-wire-gateway",
+ creator=USERNAME,
+ config=dict(
+ bankAccount=BANK_ACCOUNT_LABEL,
+ bankConnection=BANK_CONNECTION_LABEL,
+ reserveTransferLevel="UNUSED",
+ intervalIncremental="UNUSED"
+ )
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)
+
+# Create the EBICS host at the Sandbox.
+assertResponse(
+ post(
+ "http://localhost:5000/admin/ebics/host",
+ json=dict(hostID=HOST_ID, ebicsVersion=EBICS_VERSION),
+ )
+)
+
+# Create Exchange EBICS subscriber at the Sandbox.
+assertResponse(
+ post(
+ "http://localhost:5000/admin/ebics/subscribers",
+ json=dict(hostID=HOST_ID, partnerID=PARTNER_ID, userID=USER_ID),
+ )
+)
+
+# Create a bank account associated to the Exchange's EBICS subscriber,
+# again at the Sandbox.
+assertResponse(
+ post(
+ "http://localhost:5000/admin/ebics/bank-accounts",
+ json=dict(
+ subscriber=dict(hostID=HOST_ID, partnerID=PARTNER_ID, userID=USER_ID),
+ iban=SUBSCRIBER_IBAN,
+ bic=SUBSCRIBER_BIC,
+ name=SUBSCRIBER_NAME,
+ label=BANK_ACCOUNT_LABEL,
+ ),
+ )
+)
+
+# 'connect' to the bank: upload+download keys.
+assertResponse(
+ post(
+ "http://localhost:5001/bank-connections/{}/connect".format(BANK_CONNECTION_LABEL),
+ json=dict(),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)
+
+# Download bank accounts.
+assertResponse(
+ post(
+ "http://localhost:5001/bank-connections/{}/ebics/import-accounts".format(BANK_CONNECTION_LABEL),
+ json=dict(),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER),
+ )
+)