gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]