aboutsummaryrefslogtreecommitdiff
path: root/tests/components
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2020-08-13 00:41:53 +0530
committerFlorian Dold <florian.dold@gmail.com>2020-08-13 00:41:53 +0530
commitdb65f0a20669a81cb7db4425d7d044b8ff49952a (patch)
tree280ebbc25fdc3aed12ae3ebbecb692c1b0e39093 /tests/components
parente9ed3b18672af919efa12364b97fd2b7efe21cd9 (diff)
remove old tests, superseded by the JS-based harness
Diffstat (limited to 'tests/components')
-rw-r--r--tests/components/__init__.py0
-rw-r--r--tests/components/bank.py87
-rw-r--r--tests/components/config.py62
-rw-r--r--tests/components/exchange.py53
-rw-r--r--tests/components/merchant.py66
-rw-r--r--tests/components/taler_service.py18
-rw-r--r--tests/components/template.ini228
-rw-r--r--tests/components/wallet.py51
8 files changed, 0 insertions, 565 deletions
diff --git a/tests/components/__init__.py b/tests/components/__init__.py
deleted file mode 100644
index e69de29bb..000000000
--- a/tests/components/__init__.py
+++ /dev/null
diff --git a/tests/components/bank.py b/tests/components/bank.py
deleted file mode 100644
index f6551b491..000000000
--- a/tests/components/bank.py
+++ /dev/null
@@ -1,87 +0,0 @@
-import os
-import secrets
-from dataclasses import dataclass
-from subprocess import run
-
-import psutil
-import requests
-
-from .taler_service import TalerService
-
-
-@dataclass
-class BankUser:
- username: str
- password: str
-
-
-@dataclass
-class WithdrawUriResponse:
- taler_withdraw_uri: str
- withdrawal_id: str
-
-
-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)
-
- def register_random_user(self):
- username = f"testuser-{secrets.token_hex(10)}"
- password = f"testpw-{secrets.token_hex(10)}"
- requests.post(
- f"{self.url}testing/register",
- json=dict(username=username, password=password)
- )
- return BankUser(username, password)
-
- def generate_withdraw_uri(self, bankuser, amount):
- auth = (bankuser.username, bankuser.password)
- resp = requests.post(
- f"{self.url}accounts/{bankuser.username}/withdrawals",
- json=dict(amount=amount),
- auth=auth
- )
- rj = resp.json()
- return WithdrawUriResponse(
- taler_withdraw_uri=rj["taler_withdraw_uri"],
- withdrawal_id=rj["withdrawal_id"],
- )
-
- def confirm_withdrawal(self, bank_user, withdrawal_id):
- auth = (bank_user.username, bank_user.password)
- requests.post(
- f"{self.url}accounts/{bank_user.username}/withdrawals/{withdrawal_id}/confirm",
- auth=auth
- )
-
- # 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
diff --git a/tests/components/config.py b/tests/components/config.py
deleted file mode 100644
index c683a11fa..000000000
--- a/tests/components/config.py
+++ /dev/null
@@ -1,62 +0,0 @@
-import logging
-import os
-from shutil import copyfile
-from subprocess import run
-
-
-class Config:
-
- def __init__(self, request, tmpdir, worker_id):
- self.tmpdir = tmpdir.strpath
- self.data_home = os.path.join(self.tmpdir, 'data')
-
- # workaround for https://github.com/pytest-dev/pytest-services/issues/37
- logger = logging.getLogger(
- '[{worker_id}] {name}'.format(name="pytest_services.log", worker_id=worker_id))
- logger.handlers.clear()
-
- # copy config file from template
- self.conf = tmpdir.join("test.conf").strpath
- template = os.path.join(os.path.dirname(__file__), 'template.ini')
- copyfile(template, self.conf)
-
- # set TALER_HOME base dir
- config_cmd = ["taler-config", "-c", self.conf]
- run(config_cmd + ["-s", "PATHS", "-o", "TALER_HOME", "-V", self.tmpdir], check=True)
-
- # get path of exchange private key file and create key pair
- config_cmd = ["taler-config", "-c", self.conf]
- r = run(config_cmd + ["-f", "-s", "EXCHANGE", "-o", "MASTER_PRIV_FILE"],
- capture_output=True, check=True, text=True)
- master_priv_file = r.stdout.rstrip()
- master_priv_dir = os.path.dirname(master_priv_file)
- os.makedirs(master_priv_dir)
- run(["gnunet-ecc", "-g1", master_priv_file], check=True, capture_output=True)
- r = run(["gnunet-ecc", "-p", master_priv_file], check=True, capture_output=True, text=True)
- self.master_pub = r.stdout.rstrip()
-
- # write exchange public key into config
- run(config_cmd + ["-s", "exchange",
- "-o", "MASTER_PUBLIC_KEY",
- "-V", self.master_pub], check=True)
- run(config_cmd + ["-s", "merchant-exchange-default",
- "-o", "MASTER_KEY",
- "-V", self.master_pub], check=True)
-
- # write DB name into config
- self.db = "test-db"
- db_uri = "postgres:///" + self.db
- run(config_cmd + ["-s", "exchangedb-postgres", "-o", "CONFIG", "-V", db_uri], check=True)
- run(config_cmd + ["-s", "auditordb-postgres", "-o", "CONFIG", "-V", db_uri], check=True)
- run(config_cmd + ["-s", "merchantdb-postgres", "-o", "CONFIG", "-V", db_uri], check=True)
- run(config_cmd + ["-s", "bank", "-o", "database", "-V", db_uri], check=True)
-
- # create new DB
- run(["dropdb", self.db], capture_output=True)
- run(["createdb", self.db], check=True)
-
- # drop DB when test ends
- def finalize():
- run(["dropdb", self.db], capture_output=True)
-
- request.addfinalizer(finalize)
diff --git a/tests/components/exchange.py b/tests/components/exchange.py
deleted file mode 100644
index 9e804a65e..000000000
--- a/tests/components/exchange.py
+++ /dev/null
@@ -1,53 +0,0 @@
-import os
-from subprocess import run
-
-from .taler_service import TalerService
-
-
-class Exchange(TalerService):
-
- def __init__(self, config, watcher_getter, request):
- super().__init__(config, watcher_getter, request)
-
- # get own URL from config
- r = run(["taler-config", "-c", config.conf, "-s", "EXCHANGE", "-o", "BASE_URL"],
- check=True, text=True, capture_output=True)
- self.url = r.stdout.rstrip()
-
- # get and create directory for terms of service
- r = run(["taler-config", "-c", config.conf, "-s", "EXCHANGE", "-o", "TERMS_DIR"],
- check=True, text=True, capture_output=True)
- self.terms_dir = r.stdout.rstrip().replace("${TALER_DATA_HOME}", config.data_home)
- terms_dir_en = os.path.join(self.terms_dir, 'en')
- os.makedirs(terms_dir_en)
-
- # get eTag and create ToS file for it
- r = run(["taler-config", "-c", config.conf, "-s", "EXCHANGE", "-o", "TERMS_ETAG"],
- check=True, text=True, capture_output=True)
- self.terms_etag = r.stdout.rstrip()
- self.tos = "ToS Foo Bar\n"
- with open(os.path.join(terms_dir_en, "%s.txt" % self.terms_etag), 'w') as f:
- f.write(self.tos)
-
- def start(self):
- run(["taler-exchange-dbinit", "-c", self.config.conf], check=True)
- run(["taler-exchange-wire", "-c", self.config.conf], check=True)
- run(["taler-exchange-keyup", "-c", self.config.conf,
- "-L", "INFO",
- "-o", os.path.join(self.config.tmpdir, "e2a.dat")
- ], check=True, capture_output=True)
- log_path = os.path.join(self.config.tmpdir, "exchange.log")
- self.watcher_getter(
- name='taler-exchange-httpd',
- arguments=['-c', self.config.conf, '-l', log_path],
- checker=self.test_url,
- request=self.request, # Needed for the correct execution order of finalizers
- )
- # the wirewatch is needed for interaction with the bank
- log_wirewatch_path = os.path.join(self.config.tmpdir, "exchange-wirewatch.log")
- self.watcher_getter(
- name='taler-exchange-wirewatch',
- arguments=['-c', self.config.conf, '-l', log_wirewatch_path],
- checker=lambda: True, # no need to wait for this to come up
- request=self.request, # Needed for the correct execution order of finalizers
- )
diff --git a/tests/components/merchant.py b/tests/components/merchant.py
deleted file mode 100644
index 373b8ed86..000000000
--- a/tests/components/merchant.py
+++ /dev/null
@@ -1,66 +0,0 @@
-import os
-from subprocess import run
-
-import requests
-
-from .taler_service import TalerService
-
-
-class Merchant(TalerService):
-
- def __init__(self, config, watcher_getter, request):
- super().__init__(config, watcher_getter, request)
-
- # get localhost port and store merchant URL
- r = run(["taler-config", "-c", config.conf, "-s", "MERCHANT", "-o", "PORT"],
- check=True, text=True, capture_output=True)
- self.url = "http://localhost:%s/" % r.stdout.rstrip()
-
- def start(self):
- log_path = os.path.join(self.config.tmpdir, "merchant.log")
- self.watcher_getter(
- name='taler-merchant-httpd',
- arguments=['-c', self.config.conf, '-L', 'INFO', '-l', log_path],
- checker=self.test_url,
- request=self.request, # Needed for the correct execution order of finalizers
- )
-
- def create_instance(self, instance="default", name="GNU Taler Merchant"):
- body = {
- "id": instance,
- "name": name,
- "payto_uris": ["payto://x-taler-bank/test_merchant"],
- "address": {},
- "jurisdiction": {},
- "default_max_wire_fee": "TESTKUDOS:1",
- "default_wire_fee_amortization": 3,
- "default_max_deposit_fee": "TESTKUDOS:1",
- "default_wire_transfer_delay": {"d_ms": "forever"},
- "default_pay_delay": {"d_ms": "forever"}
- }
- r = requests.post(self.url + "private/instances", json=body)
- r.raise_for_status()
-
- def create_order(self, amount, instance="default", summary="Test Order",
- fulfillment_url="taler://fulfillment-success/Enjoy+your+ice+cream!"):
- body = {
- "order": {
- "amount": amount,
- "summary": summary,
- "fulfillment_url": fulfillment_url
- }
- }
- r = requests.post("{}instances/{}/private/orders".format(self.url, instance), json=body)
- r.raise_for_status()
- return r.json()
-
- def check_payment(self, order_id, instance="default"):
- r = requests.get("{}instances/{}/private/orders/{}".format(self.url, instance, order_id))
- r.raise_for_status()
- return r.json()
-
- def gen_pay_uri(self, amount, instance="default", summary="Test Order",
- fulfillment_url="taler://fulfillment-success/Enjoy+your+ice+cream!"):
- order = self.create_order(amount, instance, summary, fulfillment_url)
- response = self.check_payment(order["order_id"], instance)
- return response["taler_pay_uri"]
diff --git a/tests/components/taler_service.py b/tests/components/taler_service.py
deleted file mode 100644
index 9fce9395c..000000000
--- a/tests/components/taler_service.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import requests
-from requests.exceptions import ConnectionError
-
-
-class TalerService:
-
- def __init__(self, config, watcher_getter, request):
- self.config = config
- self.watcher_getter = watcher_getter
- self.request = request
-
- def test_url(self):
- try:
- requests.get(self.url, timeout=3)
- except ConnectionError as e:
- return False
- else:
- return True
diff --git a/tests/components/template.ini b/tests/components/template.ini
deleted file mode 100644
index 32089636d..000000000
--- a/tests/components/template.ini
+++ /dev/null
@@ -1,228 +0,0 @@
-[exchange]
-KEYDIR = ${TALER_DATA_HOME}/exchange/live-keys/
-REVOCATION_DIR = ${TALER_DATA_HOME}/exchange/revocations/
-MAX_KEYS_CACHING = forever
-DB = postgres
-MASTER_PRIV_FILE = ${TALER_DATA_HOME}/exchange/offline-keys/master.priv
-SERVE = tcp
-UNIXPATH = ${TALER_RUNTIME_DIR}/exchange.http
-UNIXPATH_MODE = 660
-PORT = 8081
-BASE_URL = http://localhost:8081/
-SIGNKEY_DURATION = 4 weeks
-LEGAL_DURATION = 2 years
-LOOKAHEAD_SIGN = 32 weeks 1 day
-LOOKAHEAD_PROVIDE = 4 weeks 1 day
-TERMS_ETAG = test_etag
-TERMS_DIR = ${TALER_DATA_HOME}/exchange/terms
-
-[merchant]
-SERVE = tcp
-PORT = 9966
-UNIXPATH = ${TALER_RUNTIME_DIR}/merchant.http
-UNIXPATH_MODE = 660
-DEFAULT_WIRE_FEE_AMORTIZATION = 1
-DB = postgres
-WIREFORMAT = default
-# Set very low, so we can be sure that the database generated
-# will contain wire transfers "ready" for the aggregator.
-WIRE_TRANSFER_DELAY = 1 minute
-DEFAULT_PAY_DEADLINE = 1 day
-DEFAULT_MAX_DEPOSIT_FEE = TESTKUDOS:0.1
-KEYFILE = ${TALER_DATA_HOME}/merchant/merchant.priv
-DEFAULT_MAX_WIRE_FEE = TESTKUDOS:0.10
-
-# Ensure that merchant reports EVERY deposit confirmation to auditor
-FORCE_AUDIT = YES
-
-[instance-default]
-KEYFILE = ${TALER_DATA_HOME}/merchant/default.priv
-NAME = Merchant Inc.
-TIP_EXCHANGE = http://localhost:8081/
-# TODO necessary to specify a different key here?
-TIP_RESERVE_PRIV_FILENAME = ${TALER_DATA_HOME}/merchant/default.priv
-
-[auditor]
-DB = postgres
-AUDITOR_PRIV_FILE = ${TALER_DATA_HOME}/auditor/offline-keys/auditor.priv
-SERVE = tcp
-UNIXPATH = ${TALER_RUNTIME_DIR}/exchange.http
-UNIXPATH_MODE = 660
-PORT = 8083
-AUDITOR_URL = http://localhost:8083/
-TINY_AMOUNT = TESTKUDOS:0.01
-
-[PATHS]
-TALER_DATA_HOME = $TALER_HOME/data/
-TALER_CONFIG_HOME = $TALER_HOME/config/
-TALER_CACHE_HOME = $TALER_HOME/cache/
-TALER_RUNTIME_DIR = ${TMPDIR:-${TMP:-/tmp}}/taler-system-runtime/
-
-[bank]
-DATABASE = postgres:///taler-auditor-basedb
-MAX_DEBT = TESTKUDOS:50.0
-MAX_DEBT_BANK = TESTKUDOS:100000.0
-HTTP_PORT = 8082
-SUGGESTED_EXCHANGE = http://localhost:8081/
-SUGGESTED_EXCHANGE_PAYTO = payto://x-taler-bank/localhost/2
-ALLOW_REGISTRATIONS = YES
-
-[exchangedb]
-AUDITOR_BASE_DIR = ${TALER_DATA_HOME}/auditors/
-WIREFEE_BASE_DIR = ${TALER_DATA_HOME}/exchange/wirefees/
-IDLE_RESERVE_EXPIRATION_TIME = 4 weeks
-LEGAL_RESERVE_EXPIRATION_TIME = 7 years
-
-[exchange_keys]
-signkey_duration = 4 weeks
-legal_duration = 2 years
-lookahead_sign = 32 weeks 1 day
-lookahead_provide = 4 weeks 1 day
-
-[taler]
-CURRENCY = TESTKUDOS
-CURRENCY_ROUND_UNIT = TESTKUDOS:0.01
-
-[exchange-account-1]
-WIRE_RESPONSE = ${TALER_DATA_HOME}/exchange/account-1.json
-PAYTO_URI = payto://x-taler-bank/localhost/Exchange
-enable_debit = yes
-enable_credit = yes
-WIRE_GATEWAY_URL = "http://localhost:8082/taler-wire-gateway/Exchange/"
-WIRE_GATEWAY_AUTH_METHOD = basic
-USERNAME = Exchange
-PASSWORD = x
-
-[merchant-account-merchant]
-PAYTO_URI = payto://x-taler-bank/localhost/42
-WIRE_RESPONSE = ${TALER_CONFIG_HOME}/merchant/account-3.json
-HONOR_default = YES
-ACTIVE_default = YES
-
-[fees-x-taler-bank]
-wire-fee-2020 = TESTKUDOS:0.01
-closing-fee-2020 = TESTKUDOS:0.01
-wire-fee-2021 = TESTKUDOS:0.01
-closing-fee-2021 = TESTKUDOS:0.01
-wire-fee-2022 = TESTKUDOS:0.01
-closing-fee-2022 = TESTKUDOS:0.01
-wire-fee-2023 = TESTKUDOS:0.01
-closing-fee-2023 = TESTKUDOS:0.01
-wire-fee-2024 = TESTKUDOS:0.01
-closing-fee-2024 = TESTKUDOS:0.01
-wire-fee-2025 = TESTKUDOS:0.01
-closing-fee-2025 = TESTKUDOS:0.01
-wire-fee-2026 = TESTKUDOS:0.01
-closing-fee-2026 = TESTKUDOS:0.01
-wire-fee-2027 = TESTKUDOS:0.01
-closing-fee-2027 = TESTKUDOS:0.01
-wire-fee-2028 = TESTKUDOS:0.01
-closing-fee-2028 = TESTKUDOS:0.01
-
-[merchant-instance-wireformat-default]
-TEST_RESPONSE_FILE = ${TALER_CONFIG_HOME}/merchant/wire/tutorial.json
-
-[merchant-exchange-default]
-EXCHANGE_BASE_URL = http://localhost:8081/
-CURRENCY = TESTKUDOS
-
-[payments-generator]
-currency = TESTKUDOS
-instance = default
-bank = http://localhost:8082/
-merchant = http://localhost:9966/
-exchange_admin = http://localhost:18080/
-exchange-admin = http://localhost:18080/
-exchange = http://localhost:8081/
-
-[coin_kudos_ct_1]
-value = TESTKUDOS:0.01
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.01
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_ct_10]
-value = TESTKUDOS:0.10
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_1]
-value = TESTKUDOS:1
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.02
-fee_deposit = TESTKUDOS:0.02
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_2]
-value = TESTKUDOS:2
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.03
-fee_deposit = TESTKUDOS:0.03
-fee_refresh = TESTKUDOS:0.04
-fee_refund = TESTKUDOS:0.02
-rsa_keysize = 1024
-
-[coin_kudos_4]
-value = TESTKUDOS:4
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.03
-fee_deposit = TESTKUDOS:0.03
-fee_refresh = TESTKUDOS:0.04
-fee_refund = TESTKUDOS:0.02
-rsa_keysize = 1024
-
-[coin_kudos_5]
-value = TESTKUDOS:5
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[coin_kudos_8]
-value = TESTKUDOS:8
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.05
-fee_deposit = TESTKUDOS:0.02
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.04
-rsa_keysize = 1024
-
-[coin_kudos_10]
-value = TESTKUDOS:10
-duration_withdraw = 7 days
-duration_spend = 2 years
-duration_legal = 3 years
-fee_withdraw = TESTKUDOS:0.01
-fee_deposit = TESTKUDOS:0.01
-fee_refresh = TESTKUDOS:0.03
-fee_refund = TESTKUDOS:0.01
-rsa_keysize = 1024
-
-[benchmark]
-BANK_DETAILS = bank_details.json
-MERCHANT_DETAILS = merchant_details.json
diff --git a/tests/components/wallet.py b/tests/components/wallet.py
deleted file mode 100644
index bfdbd9ba1..000000000
--- a/tests/components/wallet.py
+++ /dev/null
@@ -1,51 +0,0 @@
-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["type"] != "response" or "result" not in json_r:
- print(json_r)
- assert json_r["type"] == "response"
- 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 run_pending(self):
- r = run(["taler-wallet-cli", self.arg_db, "run-pending"],
- timeout=10, check=True, text=True, capture_output=True)
- self.write_to_log(r.stderr)
- return r.stdout.rstrip()
-
- def run_until_done(self):
- r = run(["taler-wallet-cli", self.arg_db, "run-until-done"],
- 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)