summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMS <ms@taler.net>2020-07-28 17:36:11 +0200
committerMS <ms@taler.net>2020-07-28 17:36:11 +0200
commitc74d28a61c316def8ac2ed01a0502c159d3c0ef3 (patch)
treeffd51bc422a42e50f20f43bb5507538f876dc07e
parent32fdf9a36ec3550131b2090b6de9f0206cd1a8a1 (diff)
downloadbank-c74d28a61c316def8ac2ed01a0502c159d3c0ef3.tar.gz
bank-c74d28a61c316def8ac2ed01a0502c159d3c0ef3.tar.bz2
bank-c74d28a61c316def8ac2ed01a0502c159d3c0ef3.zip
fix URI params parsing
-rw-r--r--talerbank/app/tests.py8
-rw-r--r--talerbank/app/views.py4
2 files changed, 9 insertions, 3 deletions
diff --git a/talerbank/app/tests.py b/talerbank/app/tests.py
index 4593831..748fd4b 100644
--- a/talerbank/app/tests.py
+++ b/talerbank/app/tests.py
@@ -33,7 +33,7 @@ from django.contrib.auth.models import User
from mock import patch, MagicMock
from .models import BankAccount, BankTransaction
from . import urls
-from .views import wire_transfer, get_reserve_pub
+from .views import wire_transfer, get_reserve_pub, PaytoParse
from taler.util.amount import (
Amount,
SignedAmount,
@@ -70,6 +70,12 @@ class ReservePubExtractionTestCase(TestCase):
self.assertTrue(get_reserve_pub("0T096A11M57GWGG0P6ZM9Z8G5829BFJFH2AN9R5T80FJ931DX7GG other data"))
self.assertFalse(get_reserve_pub("not a reserve public key"))
+class PaytoParseTestCase(TestCase):
+ def test_payto_parse(self):
+ parsed = PaytoParse("payto://x-taler-bank/bank.int.taler.net/Exchange?subject=0T096A11M57GWGG0P6ZM9Z8G5829BFJFH2AN9R5T80FJ931DX7GG")
+ self.assertTrue("Exchange" == parsed.account)
+ self.assertTrue("0T096A11M57GWGG0P6ZM9Z8G5829BFJFH2AN9R5T80FJ931DX7GG" == parsed.subject)
+
class PublicAccountsTestCase(TestCase):
def setUp(self):
clear_db()
diff --git a/talerbank/app/views.py b/talerbank/app/views.py
index a6687a8..c2d512a 100644
--- a/talerbank/app/views.py
+++ b/talerbank/app/views.py
@@ -28,7 +28,7 @@ import re
import time
import base64
import uuid
-from urllib.parse import urlparse, parse_qs
+from urllib.parse import urlparse, parse_qsl
import django.contrib.auth
import django.contrib.auth.views
import django.contrib.auth.forms
@@ -78,7 +78,7 @@ class PaytoParse:
if (len(path_as_list) == 0):
raise Exception("No account/user name found: '%s'" % payto_uri)
self.account = path_as_list[-1]
- params = parse_qs(parsed_payto.query)
+ params = dict(parse_qsl(parsed_payto.query))
self.subject = params.get("subject")
##