File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11# -*- coding: utf-8 -*-
2- from __future__ import absolute_import , print_function
3-
42import time
53
6- import six
74from six .moves .urllib .parse import urlencode
85
96from laterpay import signing
10- from laterpay .compat import stringify
117
128
139def 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
Original file line number Diff line number Diff 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 (
You can’t perform that action at this time.
0 commit comments