Add more checks to new withdrawal API test

This commit is contained in:
Torsten Grote 2020-07-29 09:33:41 -03:00
parent 7e34b6699a
commit 9a4cbcd954
No known key found for this signature in database
GPG Key ID: 3E5F77D92CF891FF
3 changed files with 41 additions and 20 deletions

View File

@ -1,3 +1,5 @@
import json
from taler.util.amount import Amount
@ -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))

View File

@ -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
)

View File

@ -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