diff options
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/Makefile.am | 3 | ||||
-rwxr-xr-x | contrib/taler-nexus-prepare | 128 |
2 files changed, 130 insertions, 1 deletions
diff --git a/contrib/Makefile.am b/contrib/Makefile.am index 2e1160f53..b706202d7 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 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), + ) +) |