mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-10 03:23:29 +03:00
tests/taler: authenticate users with tokens
This commit is contained in:
parent
e04f8bb993
commit
1741d8abaa
2 changed files with 31 additions and 7 deletions
|
@ -68,6 +68,20 @@ in
|
||||||
+ command
|
+ command
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# https://docs.taler.net/core/api-corebank.html#authentication
|
||||||
|
def create_token(machine, username, password):
|
||||||
|
"""Create a read-write bank access token for a user"""
|
||||||
|
response = succeed(machine, [
|
||||||
|
"curl -X POST",
|
||||||
|
f"-u {username}:{password}",
|
||||||
|
"-H 'Content-Type: application/json'",
|
||||||
|
"""
|
||||||
|
--data '{ "scope": "readwrite" }'
|
||||||
|
""",
|
||||||
|
f"-sSfL 'http://bank:8082/accounts/{username}/token'"
|
||||||
|
])
|
||||||
|
return json.loads(response)["access_token"]
|
||||||
|
|
||||||
|
|
||||||
def verify_balance(balanceWanted: str):
|
def verify_balance(balanceWanted: str):
|
||||||
"""Compare Taler CLI wallet balance with expected amount"""
|
"""Compare Taler CLI wallet balance with expected amount"""
|
||||||
|
@ -84,14 +98,14 @@ in
|
||||||
client.succeed(f"echo Withdraw successfully made. New balance: {balanceWanted}")
|
client.succeed(f"echo Withdraw successfully made. New balance: {balanceWanted}")
|
||||||
|
|
||||||
|
|
||||||
def verify_conversion(regionalWanted: str):
|
def verify_conversion(regionalWanted: str, accessToken: str):
|
||||||
"""Compare converted Libeufin Nexus funds with expected regional currency"""
|
"""Compare converted Libeufin Nexus funds with expected regional currency"""
|
||||||
# Get transaction details
|
# Get transaction details
|
||||||
response = json.loads(
|
response = json.loads(
|
||||||
succeed(bank, [
|
succeed(bank, [
|
||||||
"curl -sSfL",
|
"curl -sSfL",
|
||||||
|
f"-H 'Authorization: Bearer {accessToken}'",
|
||||||
# TODO: get exchange from config?
|
# TODO: get exchange from config?
|
||||||
"-u exchange:exchange",
|
|
||||||
"http://bank:8082/accounts/exchange/transactions"
|
"http://bank:8082/accounts/exchange/transactions"
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
|
|
|
@ -78,6 +78,9 @@ import ../../make-test-python.nix (
|
||||||
exchange.start()
|
exchange.start()
|
||||||
exchange.wait_for_open_port(8081)
|
exchange.wait_for_open_port(8081)
|
||||||
|
|
||||||
|
# Create access token for exchange
|
||||||
|
accessTokenExchange = create_token(exchange, "exchange", "exchange")
|
||||||
|
|
||||||
|
|
||||||
with subtest("Set up exchange"):
|
with subtest("Set up exchange"):
|
||||||
exchange.wait_until_succeeds("taler-exchange-offline download sign upload")
|
exchange.wait_until_succeeds("taler-exchange-offline download sign upload")
|
||||||
|
@ -96,12 +99,14 @@ import ../../make-test-python.nix (
|
||||||
merchant.start()
|
merchant.start()
|
||||||
merchant.wait_for_open_port(8083)
|
merchant.wait_for_open_port(8083)
|
||||||
|
|
||||||
|
# Create access token for merchant
|
||||||
|
accessTokenMerchant = create_token(client, "merchant", "merchant")
|
||||||
|
|
||||||
with subtest("Set up merchant"):
|
with subtest("Set up merchant"):
|
||||||
# Create default instance (similar to admin)
|
# Create default instance (similar to admin)
|
||||||
succeed(merchant, [
|
succeed(merchant, [
|
||||||
"curl -X POST",
|
"curl -X POST",
|
||||||
"-H 'Authorization: Bearer secret-token:super_secret'",
|
f"-H 'Authorization: Bearer {accessTokenMerchant}'",
|
||||||
"""
|
"""
|
||||||
--data '{
|
--data '{
|
||||||
"auth": { "method": "external" },
|
"auth": { "method": "external" },
|
||||||
|
@ -150,6 +155,8 @@ import ../../make-test-python.nix (
|
||||||
|
|
||||||
client.succeed("curl -s http://exchange:8081/")
|
client.succeed("curl -s http://exchange:8081/")
|
||||||
|
|
||||||
|
# Create access token for user
|
||||||
|
accessTokenUser = create_token(client, "${TUSER}", "${TPASS}")
|
||||||
|
|
||||||
# Make a withdrawal from the CLI wallet
|
# Make a withdrawal from the CLI wallet
|
||||||
with subtest("Make a withdrawal from the CLI wallet"):
|
with subtest("Make a withdrawal from the CLI wallet"):
|
||||||
|
@ -164,7 +171,7 @@ import ../../make-test-python.nix (
|
||||||
withdrawal = json.loads(
|
withdrawal = json.loads(
|
||||||
succeed(client, [
|
succeed(client, [
|
||||||
"curl -X POST",
|
"curl -X POST",
|
||||||
"-u ${TUSER}:${TPASS}",
|
f"-H 'Authorization: Bearer {accessTokenUser}'",
|
||||||
"-H 'Content-Type: application/json'",
|
"-H 'Content-Type: application/json'",
|
||||||
f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them
|
f"""--data '{{"amount": "{balanceWanted}"}}'""", # double brackets escapes them
|
||||||
"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals'"
|
"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals'"
|
||||||
|
@ -176,7 +183,7 @@ import ../../make-test-python.nix (
|
||||||
wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange http://exchange:8081/")
|
wallet_cli(f"withdraw accept-uri {withdrawal["taler_withdraw_uri"]} --exchange http://exchange:8081/")
|
||||||
succeed(client, [
|
succeed(client, [
|
||||||
"curl -X POST",
|
"curl -X POST",
|
||||||
"-u ${TUSER}:${TPASS}",
|
f"-H 'Authorization: Bearer {accessTokenUser}'",
|
||||||
"-H 'Content-Type: application/json'",
|
"-H 'Content-Type: application/json'",
|
||||||
f"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals/{withdrawal["withdrawal_id"]}/confirm'"
|
f"-sSfL 'http://bank:8082/accounts/${TUSER}/withdrawals/{withdrawal["withdrawal_id"]}/confirm'"
|
||||||
])
|
])
|
||||||
|
@ -231,14 +238,17 @@ import ../../make-test-python.nix (
|
||||||
with subtest("Libeufin Nexus currency conversion"):
|
with subtest("Libeufin Nexus currency conversion"):
|
||||||
regionalWanted = "20"
|
regionalWanted = "20"
|
||||||
|
|
||||||
|
# Create access token
|
||||||
|
accessTokenAdmin = create_token(bank, "${AUSER}", "${APASS}")
|
||||||
|
|
||||||
# Setup Nexus ebics keys
|
# Setup Nexus ebics keys
|
||||||
systemd_run(bank, "libeufin-nexus ebics-setup -L debug -c /etc/libeufin/libeufin.conf", "libeufin-nexus")
|
systemd_run(bank, "libeufin-nexus ebics-setup -L debug -c /etc/libeufin/libeufin.conf", "libeufin-nexus")
|
||||||
|
|
||||||
# Set currency conversion rates (1:1)
|
# Set currency conversion rates (1:1)
|
||||||
succeed(bank, [
|
succeed(bank, [
|
||||||
"curl -X POST",
|
"curl -X POST",
|
||||||
|
f"-H 'Authorization: Bearer {accessTokenAdmin}'",
|
||||||
"-H 'Content-Type: application/json'",
|
"-H 'Content-Type: application/json'",
|
||||||
"-u ${AUSER}:${APASS}",
|
|
||||||
"""
|
"""
|
||||||
--data '{
|
--data '{
|
||||||
"cashin_ratio": "1",
|
"cashin_ratio": "1",
|
||||||
|
@ -264,7 +274,7 @@ import ../../make-test-python.nix (
|
||||||
systemd_run(bank, f"""libeufin-nexus testing fake-incoming -c ${bankConfig} --amount="${FIAT_CURRENCY}:{regionalWanted}" --subject="{reservePub}" "payto://iban/CH4740123RW4167362694" """, "libeufin-nexus")
|
systemd_run(bank, f"""libeufin-nexus testing fake-incoming -c ${bankConfig} --amount="${FIAT_CURRENCY}:{regionalWanted}" --subject="{reservePub}" "payto://iban/CH4740123RW4167362694" """, "libeufin-nexus")
|
||||||
wallet_cli("run-until-done")
|
wallet_cli("run-until-done")
|
||||||
|
|
||||||
verify_conversion(regionalWanted)
|
verify_conversion(regionalWanted, accessTokenExchange)
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue