Skip to content

Commit 0fb3968

Browse files
committed
Reused normalise_param_structure
1 parent 1f525c8 commit 0fb3968

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

laterpay/utils.py

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
# -*- coding: utf-8 -*-
2-
from __future__ import absolute_import, print_function
3-
42
import time
53

6-
import six
74
from six.moves.urllib.parse import urlencode
85

96
from laterpay import signing
10-
from laterpay.compat import stringify
117

128

139
def signed_query(secret,
@@ -40,17 +36,12 @@ def signed_query(secret,
4036
4137
:return: url-encoded and signed query string
4238
"""
39+
params = signing.normalise_param_structure(params)
40+
4341
if "ts" not in params and add_timestamp:
4442
params["ts"] = str(int(time.time()))
4543

46-
param_list = [
47-
(
48-
stringify(key), [stringify(v) for v in val]
49-
if isinstance(val, (list, tuple))
50-
else stringify(val)
51-
)
52-
for key, val in six.iteritems(params)
53-
]
44+
param_list = list(params.items())
5445

5546
qs = urlencode(param_list, doseq=True)
5647

tests/test_utils.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,20 @@ def test_signed_query_added_timestamp(self, time_time_mock):
5656
self.assertEqual(qsd['ts'], ['123'])
5757
self.assertEqual(qsd['foo'], ['bar'])
5858

59+
@mock.patch('time.time')
60+
def test_signed_query_added_timestamp_params_not_dict(self, time_time_mock):
61+
time_time_mock.return_value = 123
62+
63+
params = [('foo', 'bar')]
64+
url = 'https://endpoint.com/api'
65+
secret = 'secret'
66+
67+
qs = utils.signed_query(secret, params, url)
68+
qsd = parse_qs(qs)
69+
70+
self.assertEqual(qsd['ts'], ['123'])
71+
self.assertEqual(qsd['foo'], ['bar'])
72+
5973
def test_signed_url(self):
6074
params = {'foo': 'bar'}
6175
url = utils.signed_url(

0 commit comments

Comments
 (0)