summaryrefslogtreecommitdiff
path: root/integration-tests/test-ebics.py
diff options
context:
space:
mode:
Diffstat (limited to 'integration-tests/test-ebics.py')
-rwxr-xr-xintegration-tests/test-ebics.py158
1 files changed, 108 insertions, 50 deletions
diff --git a/integration-tests/test-ebics.py b/integration-tests/test-ebics.py
index c1b02a83..cc960ccb 100755
--- a/integration-tests/test-ebics.py
+++ b/integration-tests/test-ebics.py
@@ -5,6 +5,9 @@ from subprocess import call, Popen, PIPE
from time import sleep
import os
import socket
+import sqlite3
+import hashlib
+import base64
# Steps implemented in this test.
#
@@ -27,11 +30,17 @@ import socket
# 4 Verify that history is empty.
# 5 Issue a payment from Nexus
# -> (a) Prepare & (b) trigger CCT.
-# 6 Request history again, from Nexus to Bank.
+# 6 Request history after submitting the payment,
+# from Nexus to Bank.
# 7 Verify that previous payment shows up.
# Nexus user details
USERNAME="person"
+PASSWORD="y"
+USER_AUTHORIZATION_HEADER = "basic {}".format(base64.b64encode(b"person:y").decode("utf-8"))
+
+# Admin authentication
+ADMIN_AUTHORIZATION_HEADER = "basic {}".format(base64.b64encode(b"admin:x").decode("utf-8"))
# EBICS details
EBICS_URL="http://localhost:5000/ebicsweb"
@@ -84,12 +93,13 @@ for i in range(10):
if i == 9:
nexus.terminate()
stdout, stderr = nexus.communicate()
+ print("Nexus timed out")
print("{}\n{}".format(stdout.decode(), stderr.decode()))
exit(77)
- sleep(1)
+ sleep(2)
continue
break
-
+# Start sandbox
checkPorts([5000])
sandbox = Popen(["./gradlew", "sandbox:run"], stdout=PIPE, stderr=PIPE)
for i in range(10):
@@ -100,9 +110,10 @@ for i in range(10):
nexus.terminate()
sandbox.terminate()
stdout, stderr = nexus.communicate()
+ print("Sandbox timed out")
print("{}\n{}".format(stdout.decode(), stderr.decode()))
exit(77)
- sleep(1)
+ sleep(2)
continue
break
@@ -147,111 +158,158 @@ assertResponse(
)
)
-#1.a
+#1.a, make a new nexus user.
+
+# "Create" the admin user first.
+dbconn = sqlite3.connect("nexus/libeufin-nexus.sqlite3")
+dbconn.execute(
+ "INSERT INTO NexusUsers (id, password) VALUES (?, ?)",
+ ("admin", sqlite3.Binary(hashlib.sha256(b"x").digest()))
+)
+dbconn.commit()
+dbconn.close()
+
assertResponse(
post(
- "http://localhost:5001/users/{}".format(USERNAME),
+ "http://localhost:5001/users",
+ headers=dict(Authorization=ADMIN_AUTHORIZATION_HEADER),
json=dict(
- password="secret"
+ username=USERNAME,
+ password=PASSWORD
)
)
)
-#1.b
+#1.b, make a ebics transport for the new user.
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}".format(USERNAME),
+ "http://localhost:5001/bank-transports",
json=dict(
- ebicsURL=EBICS_URL,
- hostID=HOST_ID,
- partnerID=PARTNER_ID,
- userID=USER_ID
- )
+ transport=dict(
+ name="my-ebics",
+ type="ebics"
+ ),
+ data=dict(
+ ebicsURL=EBICS_URL,
+ hostID=HOST_ID,
+ partnerID=PARTNER_ID,
+ userID=USER_ID
+ )
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-#2.a
+
+#2.a, upload keys to the bank (INI & HIA)
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/sendINI".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-transports/sendINI",
+ json=dict(
+ type="ebics",
+ name="my-ebics"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/sendHIA".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-transports/sendHIA",
+ json=dict(
+ type="ebics",
+ name="my-ebics"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-#2.b
+#2.b, download keys from the bank (HPB)
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/sync".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-transports/syncHPB",
+ json=dict(
+ type="ebics",
+ name="my-ebics"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-#2.c
+#2.c, fetch bank account information
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/fetch-accounts".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-transports/syncHTD",
+ json=dict(
+ type="ebics",
+ name="my-ebics"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-#3
+#3, ask nexus to download history
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/collect-transactions-c53".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-accounts/collected-transactions",
+ json=dict(
+ type="ebics",
+ name="my-ebics"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-#4
+#4, make sure history is empty
resp = assertResponse(
get(
- "http://localhost:5001/users/{}/history".format(USERNAME)
+ "http://localhost:5001/bank-accounts/{}/collected-transactions".format(BANK_ACCOUNT_LABEL),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-assert(len(resp.json().get("payments")) == 0)
+assert(len(resp.json().get("transactions")) == 0)
-#5.a
-assertResponse(
+#5.a, prepare a payment
+resp = assertResponse(
post(
- "http://localhost:5001/users/{}/prepare-payment".format(USERNAME),
+ "http://localhost:5001/bank-accounts/{}/prepared-payments".format(BANK_ACCOUNT_LABEL),
json=dict(
- creditorIban="FR7630006000011234567890189",
- creditorBic="AGRIFRPP",
- creditorName="Jacques La Fayette",
- debitorIban=SUBSCRIBER_IBAN,
- debitorBic=SUBSCRIBER_BIC,
- debitorName=SUBSCRIBER_NAME,
- subject="integration test",
- sum=1
- )
+ iban="FR7630006000011234567890189",
+ bic="AGRIFRPP",
+ name="Jacques La Fayette",
+ subject="integration test",
+ amount="EUR:1"
+ ),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
+PREPARED_PAYMENT_UUID=resp.json().get("uuid")
+assert(PREPARED_PAYMENT_UUID != None)
-#5.b
+#5.b, submit prepared statement
assertResponse(
- post("http://localhost:5001/ebics/execute-payments")
+ post(
+ "http://localhost:5001/bank-accounts/prepared-payments/submit",
+ json=dict(uuid=PREPARED_PAYMENT_UUID),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
+ )
)
-#6
+#6, request history after payment submission
assertResponse(
post(
- "http://localhost:5001/ebics/subscribers/{}/collect-transactions-c53".format(USERNAME),
- json=dict()
+ "http://localhost:5001/bank-accounts/collected-transactions",
+ json=dict(),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
resp = assertResponse(
get(
- "http://localhost:5001/users/{}/history".format(USERNAME)
+ "http://localhost:5001/bank-accounts/{}/collected-transactions".format(BANK_ACCOUNT_LABEL),
+ headers=dict(Authorization=USER_AUTHORIZATION_HEADER)
)
)
-assert(len(resp.json().get("payments")) == 1)
+assert(len(resp.json().get("transactions")) == 1)
nexus.terminate()
sandbox.terminate()