summaryrefslogtreecommitdiff
path: root/tests/components/bank.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/components/bank.py')
-rw-r--r--tests/components/bank.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/components/bank.py b/tests/components/bank.py
new file mode 100644
index 000000000..707edbfc4
--- /dev/null
+++ b/tests/components/bank.py
@@ -0,0 +1,43 @@
+import os
+from subprocess import run
+
+import psutil
+
+from .taler_service import TalerService
+
+
+class Bank(TalerService):
+
+ def __init__(self, config, watcher_getter, request):
+ super().__init__(config, watcher_getter, request)
+
+ # get localhost port and store bank URL
+ r = run(["taler-config", "-c", config.conf, "-s", "BANK", "-o", "HTTP_PORT"],
+ check=True, text=True, capture_output=True)
+ self.url = "http://localhost:%s" % r.stdout.rstrip()
+
+ def start(self):
+ db = "postgres:///%s" % self.config.db
+ log_path = os.path.join(self.config.tmpdir, "bank.log")
+ log_file = open(log_path, 'w')
+ self.watcher_getter(
+ name='taler-bank-manage-testing',
+ arguments=[self.config.conf, db, 'serve-http'],
+ checker=self.test_process,
+ kwargs=dict(stderr=log_file, stdout=log_file),
+ request=self.request, # Needed for the correct execution order of finalizers
+ )
+
+ def close_log():
+ log_file.close()
+
+ self.request.addfinalizer(close_log)
+
+ # Alternative way to check if the bank came up.
+ # Testing the URL has the issue that on the CI, django keeps closing the connection.
+ @staticmethod
+ def test_process():
+ for p in psutil.process_iter(['name', 'cmdline']):
+ if p.info["name"] == "uwsgi" and p.info["cmdline"][-1] == "talerbank.wsgi":
+ return True
+ return False