tests/taler: create exchange credentials at runtime

Basic auth is deprecated, so exchange credentials must be set at runtime
because it requires a token from the bank.

eljamm 21ad6f74 1741d8ab

Changed files
+23 -7
nixos
tests
+6 -1
nixos/tests/taler/common/nodes.nix
···
settings = {
taler.CURRENCY = CURRENCY;
};
-
includes = [ ../conf/taler-accounts.conf ];
+
includes = [
+
../conf/taler-accounts.conf
+
# The exchange requires a token from the bank, so its credentials
+
# need to be set at runtime
+
"/etc/taler/secrets/exchange-account.secret.conf"
+
];
exchange = {
enable = true;
debug = true;
+11
nixos/tests/taler/common/scripts.nix
···
return json.loads(response)["access_token"]
+
# Basic auth is deprecated, so exchange credentials must be set at
+
# runtime because it requires a token from the bank.
+
def create_exchange_auth(token: str):
+
template = f"""
+
[exchange-accountcredentials-test]
+
WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/
+
WIRE_GATEWAY_AUTH_METHOD = BEARER
+
TOKEN = "{token}"
+
"""
+
return "\n".join([line.strip() for line in template.splitlines()])
+
def verify_balance(balanceWanted: str):
"""Compare Taler CLI wallet balance with expected amount"""
balance = wallet_cli("balance --json")
-6
nixos/tests/taler/conf/taler-accounts.conf
···
PAYTO_URI = payto://x-taler-bank/bank:8082/exchange?receiver-name=Exchange
ENABLE_DEBIT = YES
ENABLE_CREDIT = YES
-
-
[exchange-accountcredentials-test]
-
WIRE_GATEWAY_URL = http://bank:8082/accounts/exchange/taler-wire-gateway/
-
WIRE_GATEWAY_AUTH_METHOD = BASIC
-
USERNAME = exchange
-
PASSWORD = exchange
+6
nixos/tests/taler/tests/basic.nix
···
exchange.start()
+
+
# exchange credentials must be set at runtime because it requires a token from the bank
+
exchange.succeed("mkdir -p /etc/taler/secrets/")
+
exchange.succeed("touch /etc/taler/secrets/exchange-account.secret.conf")
+
exchange.wait_for_open_port(8081)
# Create access token for exchange
accessTokenExchange = create_token(exchange, "exchange", "exchange")
+
exchange.succeed(f'echo "{create_exchange_auth(accessTokenExchange)}" > /etc/taler/secrets/exchange-account.secret.conf')
with subtest("Set up exchange"):
exchange.wait_until_succeeds("taler-exchange-offline download sign upload")