summaryrefslogtreecommitdiff
path: root/contrib/taler-nexus-prepare
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-08-06 13:25:54 +0200
committerChristian Grothoff <christian@grothoff.org>2022-08-06 13:25:54 +0200
commitc602e11a3642fe9cd59a3526fb4f99912e275092 (patch)
treeea533c922f53addc25a985541cd82c786ad336d7 /contrib/taler-nexus-prepare
parent6834b1290fa4bd9d6331329282f72f1f67b4d1bf (diff)
downloadexchange-c602e11a3642fe9cd59a3526fb4f99912e275092.tar.gz
exchange-c602e11a3642fe9cd59a3526fb4f99912e275092.tar.bz2
exchange-c602e11a3642fe9cd59a3526fb4f99912e275092.zip
-merge eufin branch (manually)
Diffstat (limited to 'contrib/taler-nexus-prepare')
-rwxr-xr-xcontrib/taler-nexus-prepare233
1 files changed, 110 insertions, 123 deletions
diff --git a/contrib/taler-nexus-prepare b/contrib/taler-nexus-prepare
index 66a0b1c1e..6a36387d9 100755
--- a/contrib/taler-nexus-prepare
+++ b/contrib/taler-nexus-prepare
@@ -1,128 +1,115 @@
-#!/usr/bin/env python3
-# This file is in the public domain.
+#!/bin/bash
-from requests import get, post
-from subprocess import call
-import base64
+set -eu
# 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"
+EBICS_URL="http://localhost:5000/ebicsweb"
+HOST_ID="HOST01"
+PARTNER_ID="PARTNER1"
+USER_ID="USER1"
+
+# This is used _both_ at Sandbox and at Nexus.
+# Basically, Nexus imports the offered bank account
+# using the same name used by the Sandbox.
+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),
- )
-)
+export LIBEUFIN_SANDBOX_USERNAME=exchange
+export LIBEUFIN_SANDBOX_PASSWORD=x
+export LIBEUFIN_SANDBOX_URL=http://localhost:5000/demobanks/default
+libeufin-cli sandbox demobank register --name "Exchange Company"
+
+export LIBEUFIN_SANDBOX_USERNAME=fortytwo
+export LIBEUFIN_SANDBOX_PASSWORD=x
+export LIBEUFIN_SANDBOX_URL=http://localhost:5000/demobanks/default
+libeufin-cli sandbox demobank register \
+ --name User42 --iban FR7630006000011234567890189
+
+export LIBEUFIN_SANDBOX_USERNAME=fortythree
+export LIBEUFIN_SANDBOX_PASSWORD=x
+export LIBEUFIN_SANDBOX_URL=http://localhost:5000/demobanks/default
+libeufin-cli sandbox demobank register \
+ --name User43 --iban GB33BUKB20201555555555
+
+export LIBEUFIN_SANDBOX_USERNAME=admin
+export LIBEUFIN_SANDBOX_PASSWORD=secret
+export LIBEUFIN_SANDBOX_URL=http://localhost:5000/demobanks/default
+echo -n "Create EBICS host at Sandbox..."
+libeufin-cli sandbox \
+ --sandbox-url "http://localhost:5000" \
+ ebicshost create --host-id $HOST_ID
+echo " OK"
+
+echo -n "Create exchange EBICS subscriber at Sandbox..."
+libeufin-cli sandbox \
+ demobank new-ebicssubscriber --host-id $HOST_ID \
+ --user-id $USER_ID --partner-id $PARTNER_ID \
+ --bank-account exchange # that's a username _and_ a bank account name
+echo " OK"
+unset LIBEUFIN_SANDBOX_USERNAME
+unset LIBEUFIN_SANDBOX_PASSWORD
+unset LIBEUFIN_SANDBOX_URL
+
+export LIBEUFIN_NEXUS_USERNAME=exchange
+export LIBEUFIN_NEXUS_PASSWORD=x
+export LIBEUFIN_NEXUS_URL=http://localhost:5001/
+
+echo -n "Create the exchange (super)user at Nexus..."
+libeufin-nexus superuser exchange --password x
+echo " DONE"
+
+echo -n "Creating a EBICS connection at Nexus..."
+libeufin-cli connections new-ebics-connection \
+ --ebics-url $EBICS_URL \
+ --host-id $HOST_ID \
+ --partner-id $PARTNER_ID \
+ --ebics-user-id $USER_ID \
+ $BANK_CONNECTION_LABEL
+echo " OK"
+
+echo -n "Setup EBICS keying..."
+libeufin-cli connections connect $BANK_CONNECTION_LABEL > /dev/null
+echo " OK"
+
+echo -n "Download bank account name from Sandbox..."
+libeufin-cli connections download-bank-accounts $BANK_CONNECTION_LABEL
+echo " OK"
+
+echo -n "Importing bank account info into Nexus..."
+libeufin-cli connections import-bank-account \
+ --offered-account-id exchange \
+ --nexus-bank-account-id $BANK_ACCOUNT_LABEL \
+ $BANK_CONNECTION_LABEL
+echo " OK"
+
+echo -n "Create the Taler facade at Nexus..."
+libeufin-cli facades \
+ new-taler-wire-gateway-facade \
+ --currency KUDOS --facade-name $FACADE_LABEL \
+ $BANK_CONNECTION_LABEL $BANK_ACCOUNT_LABEL
+echo " DONE"
+
+echo -n Setup payments submission task..
+# Tries every second.
+libeufin-cli accounts task-schedule \
+ --task-type submit \
+ --task-name exchange-payments \
+ --task-cronspec "* * *" \
+ $BANK_ACCOUNT_LABEL
+echo OK
+# Tries every second. Ask C52
+echo -n Setup history fetch task..
+libeufin-cli accounts task-schedule \
+ --task-type fetch \
+ --task-name exchange-history \
+ --task-cronspec "* * *" \
+ --task-param-level report \
+ --task-param-range-type latest \
+ $BANK_ACCOUNT_LABEL
+echo OK
+
+# unset, in case the script gets 'source'd.
+unset LIBEUFIN_NEXUS_USERNAME
+unset LIBEUFIN_NEXUS_PASSWORD
+unset LIBEUFIN_NEXUS_URL