diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-08-13 00:41:53 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-08-13 00:41:53 +0530 |
commit | db65f0a20669a81cb7db4425d7d044b8ff49952a (patch) | |
tree | 280ebbc25fdc3aed12ae3ebbecb692c1b0e39093 /tests/components | |
parent | e9ed3b18672af919efa12364b97fd2b7efe21cd9 (diff) |
remove old tests, superseded by the JS-based harness
Diffstat (limited to 'tests/components')
-rw-r--r-- | tests/components/__init__.py | 0 | ||||
-rw-r--r-- | tests/components/bank.py | 87 | ||||
-rw-r--r-- | tests/components/config.py | 62 | ||||
-rw-r--r-- | tests/components/exchange.py | 53 | ||||
-rw-r--r-- | tests/components/merchant.py | 66 | ||||
-rw-r--r-- | tests/components/taler_service.py | 18 | ||||
-rw-r--r-- | tests/components/template.ini | 228 | ||||
-rw-r--r-- | tests/components/wallet.py | 51 |
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) |