Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5f364a3

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /