summaryrefslogtreecommitdiff
path: root/tests/components/wallet.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/components/wallet.py')
-rw-r--r--tests/components/wallet.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/tests/components/wallet.py b/tests/components/wallet.py
new file mode 100644
index 000000000..77099ab88
--- /dev/null
+++ b/tests/components/wallet.py
@@ -0,0 +1,50 @@
+import json
+import os
+from subprocess import run
+
+
+class Wallet:
+
+ def __init__(self, config):
+ self.db = os.path.join(config.tmpdir, "wallet-db.json")
+ self.arg_db = "--wallet-db=%s" % self.db
+ self.log_path = os.path.join(config.tmpdir, "wallet.log")
+
+ def cmd(self, command, request=None):
+ if request is None:
+ request = dict()
+ request = json.dumps(request)
+ r = run(["taler-wallet-cli", self.arg_db, "api", command, request],
+ timeout=10, text=True, capture_output=True)
+ self.write_to_log(r.stderr)
+ if r.returncode != 0:
+ print(r)
+ assert r.returncode == 0
+ json_r = json.loads(r.stdout)
+ if json_r["isError"]:
+ print(r)
+ assert not json_r["isError"]
+ if "result" not in json_r:
+ # TODO should there not always be a "result"?
+ return None
+ return json_r["result"]
+
+ def testing_withdraw(self, amount, exchange_url, bank_url):
+ r = run(["taler-wallet-cli", self.arg_db, "--no-throttle", "testing", "withdraw",
+ "-a", amount,
+ "-e", exchange_url,
+ "-b", bank_url
+ ], timeout=10, check=True, text=True, capture_output=True)
+ self.write_to_log(r.stderr)
+
+ def gen_withdraw_uri(self, amount, bank_url):
+ r = run(["taler-wallet-cli", self.arg_db, "testing", "gen-withdraw-uri",
+ "-a", amount,
+ "-b", bank_url
+ ], timeout=10, check=True, text=True, capture_output=True)
+ self.write_to_log(r.stderr)
+ return r.stdout.rstrip()
+
+ def write_to_log(self, data):
+ with open(self.log_path, "a") as f:
+ f.write(data)