Add more checks to new withdrawal API test
This commit is contained in:
parent
7e34b6699a
commit
9a4cbcd954
@ -1,11 +1,13 @@
|
||||
import json
|
||||
|
||||
from taler.util.amount import Amount
|
||||
|
||||
|
||||
def check_single_balance(
|
||||
balances,
|
||||
available,
|
||||
pending_in=Amount.parse("TESTKUDOS:0"),
|
||||
pending_out=Amount.parse("TESTKUDOS:0"),
|
||||
balances,
|
||||
available,
|
||||
pending_in=Amount.parse("TESTKUDOS:0"),
|
||||
pending_out=Amount.parse("TESTKUDOS:0"),
|
||||
):
|
||||
assert len(balances) == 1
|
||||
assert Amount.parse(balances[0]["available"]) == available
|
||||
@ -15,3 +17,7 @@ def check_single_balance(
|
||||
|
||||
def json_to_amount(d):
|
||||
return Amount(d["currency"], d["value"], d["fraction"])
|
||||
|
||||
|
||||
def print_json(obj):
|
||||
print(json.dumps(obj, indent=2))
|
||||
|
@ -1,21 +1,20 @@
|
||||
import os
|
||||
import secrets
|
||||
from dataclasses import dataclass
|
||||
from subprocess import run
|
||||
|
||||
import psutil
|
||||
|
||||
import requests
|
||||
|
||||
import secrets
|
||||
|
||||
from .taler_service import TalerService
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
@dataclass
|
||||
class BankUser:
|
||||
username: str
|
||||
password: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class WithdrawUriResponse:
|
||||
taler_withdraw_uri: str
|
||||
@ -71,10 +70,10 @@ class Bank(TalerService):
|
||||
withdrawal_id=rj["withdrawal_id"],
|
||||
)
|
||||
|
||||
def confirm_withdrawal(self, bankuser, withdrawal_id):
|
||||
auth = (bankuser.username, bankuser.password)
|
||||
resp = requests.post(
|
||||
f"{self.url}accounts/{bankuser.username}/withdrawals/{withdrawal_id}/confirm",
|
||||
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
|
||||
)
|
||||
|
||||
|
@ -78,13 +78,11 @@ def test_withdrawal(exchange, bank, wallet):
|
||||
confirm_url = result["confirmTransferUrl"]
|
||||
|
||||
# Let the wallet do its work. At this point, the bank-integrated
|
||||
# withdrawal won't have succeeded yet, as it's not confirmed at the bank
|
||||
# side.
|
||||
# withdrawal won't have succeeded yet, as it's not confirmed at the bank side.
|
||||
wallet.run_pending()
|
||||
|
||||
# check that balance is correct
|
||||
result = wallet.cmd("getBalances")
|
||||
print(result)
|
||||
check_single_balance(result["balances"], amount_effective, amount_effective)
|
||||
|
||||
# assert that 2nd withdrawal shows up properly in transactions
|
||||
@ -114,11 +112,18 @@ def test_withdrawal(exchange, bank, wallet):
|
||||
|
||||
# check that balance is correct
|
||||
result = wallet.cmd("getBalances")
|
||||
print(result)
|
||||
check_single_balance(
|
||||
result["balances"], Amount.parse("TESTKUDOS:9.68"), Amount.parse("TESTKUDOS:0"),
|
||||
)
|
||||
|
||||
# check that transaction is no longer pending, but confirmed
|
||||
result = wallet.cmd("getTransactions")
|
||||
assert len(result["transactions"]) == 2
|
||||
transaction = result["transactions"][1] # TODO this transaction should be at the top now
|
||||
assert transaction["type"] == "withdrawal"
|
||||
assert not transaction["pending"]
|
||||
assert transaction["withdrawalDetails"]["confirmed"]
|
||||
|
||||
# one more manual withdrawal
|
||||
request = {"exchangeBaseUrl": exchange.url, "amount": amount_raw.stringify()}
|
||||
result = wallet.cmd("acceptManualWithdrawal", request)
|
||||
@ -127,7 +132,6 @@ def test_withdrawal(exchange, bank, wallet):
|
||||
|
||||
# check that balance is correct
|
||||
result = wallet.cmd("getBalances")
|
||||
print(result)
|
||||
check_single_balance(
|
||||
result["balances"], amount_effective + amount_effective, amount_effective
|
||||
)
|
||||
@ -135,6 +139,18 @@ def test_withdrawal(exchange, bank, wallet):
|
||||
# assert that 3nd withdrawal shows up properly in transactions
|
||||
result = wallet.cmd("getTransactions")
|
||||
assert len(result["transactions"]) == 3
|
||||
for t in result["transactions"]:
|
||||
print(t)
|
||||
print()
|
||||
transaction = result["transactions"][0]
|
||||
assert transaction["type"] == "withdrawal"
|
||||
assert Amount.parse(transaction["amountEffective"]) == amount_effective
|
||||
assert Amount.parse(transaction["amountRaw"]) == amount_raw
|
||||
assert transaction["exchangeBaseUrl"] == exchange.url
|
||||
assert transaction["pending"]
|
||||
withdrawal_details = transaction["withdrawalDetails"]
|
||||
assert withdrawal_details["type"] == "manual-transfer"
|
||||
assert len(withdrawal_details["exchangePaytoUris"]) == 1
|
||||
assert withdrawal_details["exchangePaytoUris"][0].startswith(payto_list[0])
|
||||
|
||||
# last withdrawal is newest
|
||||
timestamp3 = transaction["timestamp"]["t_ms"]
|
||||
assert timestamp3 > timestamp0
|
||||
assert timestamp3 > timestamp1
|
||||
|
Loading…
Reference in New Issue
Block a user