[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-bank] branch master updated: remove deprecated API, fix withdrawa
From: |
gnunet |
Subject: |
[taler-bank] branch master updated: remove deprecated API, fix withdrawal operations response |
Date: |
Fri, 31 Jul 2020 17:17:54 +0200 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository bank.
The following commit(s) were added to refs/heads/master by this push:
new 897bca1 remove deprecated API, fix withdrawal operations response
897bca1 is described below
commit 897bca12c3b3be80d0a2ddc1bbb25a82eab51f03
Author: Florian Dold <florian.dold@gmail.com>
AuthorDate: Fri Jul 31 20:47:49 2020 +0530
remove deprecated API, fix withdrawal operations response
---
talerbank/app/tests.py | 84 --------------------------------------------------
talerbank/app/urls.py | 6 ----
talerbank/app/views.py | 59 ++++++++++++++---------------------
3 files changed, 23 insertions(+), 126 deletions(-)
diff --git a/talerbank/app/tests.py b/talerbank/app/tests.py
index 748fd4b..3c98986 100644
--- a/talerbank/app/tests.py
+++ b/talerbank/app/tests.py
@@ -272,90 +272,6 @@ class LoginTestCase(TestCase):
data = response.content.decode("utf-8")
self.assertEqual(401, response.status_code)
-
-class WithdrawHeadlessTestCase(TestCase):
- def setUp(self):
- BankAccount(
- user=User.objects.create_user(
- username="headless_wallet", password="headless_password"
- ),
- balance=SignedAmount(True, Amount(settings.TALER_CURRENCY, 10, 0)),
- ).save()
- # Gets account #2, in line with config.
- BankAccount(
- user=User.objects.create_user(
- username="Exchange", password="some_password"
- ),
- account_no=2,
- ).save()
-
- def test_withdraw_headless(self):
- client = Client()
-
- data=dict(
- reserve_pub="FAKERESERVEPUB",
- amount=f"{settings.TALER_CURRENCY}:10",
- exchange_payto_uri="payto://x-taler-bank/localhost/Exchange",
- )
- response = client.post(
- reverse("withdraw-headless", urlconf=urls),
- data=data,
- content_type="application/json",
- follow=True,
- HTTP_AUTHORIZATION=make_auth_line("headless_wallet",
"headless_password"),
- )
- self.assertEqual(200, response.status_code)
-
- # Try withdrawing more than owning.
- settings.TALER_MAX_DEBT = f"{settings.TALER_CURRENCY}:0"
- data=dict(
- reserve_pub="FAKERESERVEPUB",
- amount=f"{settings.TALER_CURRENCY}:101",
- exchange_payto_uri="payto://x-taler-bank/localhost/Exchange",
- )
- response = client.post(
- reverse("withdraw-headless", urlconf=urls),
- data=data,
- content_type="application/json",
- HTTP_AUTHORIZATION=make_auth_line("headless_wallet",
"headless_password"),
- )
- self.assertEqual(406, response.status_code)
-
- # Try withdrawing giving non-existent recipient.
- data=dict(
- reserve_pub="FAKERESERVEPUB",
- amount=f"{settings.TALER_CURRENCY}:101",
-
exchange_payto_uri="payto://x-taler-bank/localhost/idonotexist",
- )
- response = client.post(
- reverse("withdraw-headless", urlconf=urls),
- data=data,
- content_type="application/json",
- follow=True,
- HTTP_AUTHORIZATION=make_auth_line("headless_wallet",
"headless_password"),
- )
- self.assertEqual(404, response.status_code)
-
- # Try withdrawing giving invalid JSON.
- data = (
- '{"auth": {"type": "basic"}, \
- "XXX": "YYY", \
- "amount": "%s:0.4"}'
- % settings.TALER_CURRENCY
- )
- response = client.post(
- reverse("withdraw-headless", urlconf=urls),
- data=data,
- content_type="application/json",
- follow=True,
- HTTP_AUTHORIZATION=make_auth_line("headless_wallet",
"headless_password"),
- )
- self.assertEqual(400, response.status_code)
-
- def tearDown(self):
- clear_db()
-
-
class AddIncomingTestCase(TestCase):
"""Test money transfer's API"""
diff --git a/talerbank/app/urls.py b/talerbank/app/urls.py
index 064024d..b4bc047 100644
--- a/talerbank/app/urls.py
+++ b/talerbank/app/urls.py
@@ -99,12 +99,6 @@ urlpatterns = [
views.api_withdraw_operation,
name="api-withdraw-operation",
),
- path("api/withdraw-headless", views.withdraw_headless,
name="withdraw-headless"),
- path(
- "api/withdraw-headless-uri",
- views.withdraw_headless_uri,
- name="withdraw-headless-uri",
- ),
path("api/register", views.register_headless, name="register-headless"),
path("start-withdrawal", views.start_withdrawal, name="start-withdrawal"),
path(
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index afe4487..5c84b18 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -976,26 +976,6 @@ def make_taler_withdraw_uri(request, withdraw_id):
p = "/".join([host] + pfx_components + [str(withdraw_id)])
return f"taler{proto_extra}://withdraw/{p}"
-@login_via_headers
-@csrf_exempt
-@require_POST
-def withdraw_headless_uri(request, user):
- data = WithdrawHeadlessUri(json.loads(decode_body(request)))
- amount = Amount.parse(data.get("amount"))
- user_account = BankAccount.objects.get(user=user)
- withdraw_amount = SignedAmount(True, amount)
- debt_threshold = SignedAmount.parse(settings.TALER_MAX_DEBT)
- user_balance = user_account.balance
- if user_balance - withdraw_amount < -debt_threshold:
- raise DebitLimitException(
- f"Aborting payment initiated by '{user_account.user.username}',
debit limit {debt_threshold} crossed."
- )
- op = TalerWithdrawOperation(amount=amount, withdraw_account=user_account)
- op.save()
- taler_withdraw_uri = make_taler_withdraw_uri(request, op.withdraw_id)
- return JsonResponse({"taler_withdraw_uri": taler_withdraw_uri,})
-
-
@login_via_headers
@csrf_exempt
@require_POST
@@ -1064,28 +1044,35 @@ def api_withdraw_operation(request, withdraw_id):
dict(error="selection of withdraw parameters already
done"),
status=409,
)
- # No conflict, same data!
- return JsonResponse(dict(), status=200)
- with transaction.atomic():
- op.selected_exchange_account = exchange_account
- op.selected_reserve_pub = selected_reserve_pub
- if op.confirmation_done and not op.selection_done:
- # Confirmation already happened, we still need to transfer
funds!
- wire_transfer(
- op.amount,
- user_account,
- op.selected_exchange_account,
- op.selected_reserve_pub,
- )
- op.selection_done = True
- op.save()
- return JsonResponse(dict(), status=200)
+ else:
+ with transaction.atomic():
+ op.selected_exchange_account = exchange_account
+ op.selected_reserve_pub = selected_reserve_pub
+ if op.confirmation_done and not op.selection_done:
+ # Confirmation already happened, we still need to transfer
funds!
+ wire_transfer(
+ op.amount,
+ user_account,
+ op.selected_exchange_account,
+ op.selected_reserve_pub,
+ )
+ op.selection_done = True
+ op.save()
+ return JsonResponse(
+ dict(
+ transfer_done=op.confirmation_done,
+ confirm_transfer_url=request.build_absolute_uri(
+ reverse("withdraw-confirm", args=(withdraw_id,))
+ ),
+ )
+ )
elif request.method == "GET":
host = request.get_host()
return JsonResponse(
dict(
selection_done=op.selection_done,
transfer_done=op.confirmation_done,
+ aborted=op.aborted,
amount=op.amount.stringify(),
wire_types=["x-taler-bank"],
sender_wire=f"payto://x-taler-bank/{host}/{op.withdraw_account.user.username}",
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-bank] branch master updated: remove deprecated API, fix withdrawal operations response,
gnunet <=