Skip to content

Commit 5f364a3

Browse files
authored
Merge pull request #222 from TimSC/py3-query-string
Test and fix for issue #207
2 parents f97bf15 + 281efc4 commit 5f364a3

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

oauth2/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ def __init__(self, method=HTTP_METHOD, url=None, parameters=None,
353353
for k, v in parameters.items():
354354
k = to_unicode(k)
355355
v = to_unicode_optional_iterator(v)
356+
356357
self[k] = v
357358
self.body = body
358359
self.is_form_encoded = is_form_encoded
@@ -540,6 +541,7 @@ def from_request(cls, http_method, http_url, headers=None, parameters=None,
540541
# GET or POST query string.
541542
if query_string:
542543
query_params = cls._split_url_string(query_string)
544+
543545
parameters.update(query_params)
544546

545547
# URL parameters.
@@ -757,6 +759,8 @@ def _check_signature(self, request, consumer, token):
757759
signature = request.get('oauth_signature')
758760
if signature is None:
759761
raise MissingSignature('Missing oauth_signature.')
762+
if isinstance(signature, str):
763+
signature = signature.encode('ascii', 'ignore')
760764

761765
# Validate the signature.
762766
valid = signature_method.check(request, consumer, token, signature)

tests/test_oauth.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1210,7 +1210,7 @@ def sign(self, request, consumer, token):
12101210

12111211
class TestServer(unittest.TestCase):
12121212
def setUp(self):
1213-
url = "http://sp.example.com/"
1213+
self.url = "http://sp.example.com/"
12141214

12151215
params = {
12161216
'oauth_version': "1.0",
@@ -1227,7 +1227,7 @@ def setUp(self):
12271227

12281228
params['oauth_token'] = self.token.key
12291229
params['oauth_consumer_key'] = self.consumer.key
1230-
self.request = oauth.Request(method="GET", url=url, parameters=params)
1230+
self.request = oauth.Request(method="GET", url=self.url, parameters=params)
12311231

12321232
signature_method = oauth.SignatureMethod_HMAC_SHA1()
12331233
self.request.sign_request(signature_method, self.consumer, self.token)
@@ -1269,6 +1269,18 @@ def test_verify_request(self):
12691269
self.assertEqual(parameters['foo'], 59)
12701270
self.assertEqual(parameters['multi'], ['FOO','BAR'])
12711271

1272+
def test_verify_request_query_string(self):
1273+
server = oauth.Server()
1274+
server.add_signature_method(oauth.SignatureMethod_HMAC_SHA1())
1275+
1276+
signature_method = oauth.SignatureMethod_HMAC_SHA1()
1277+
request2 = oauth.Request.from_request("GET", self.url, query_string=urlencode(dict(self.request)))
1278+
request2.sign_request(signature_method, self.consumer, self.token)
1279+
request3 = oauth.Request.from_request("GET", self.url, query_string=urlencode(dict(request2)))
1280+
1281+
parameters = server.verify_request(request3, self.consumer,
1282+
self.token)
1283+
12721284
def test_verify_request_missing_signature(self):
12731285
from oauth2 import MissingSignature
12741286
server = oauth.Server()

0 commit comments

Comments
 (0)