Skip to content

Commit 1c3319c

Browse files
authored
Merge branch 'master' into master
2 parents d4b0b6d + 5f364a3 commit 1c3319c

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

.travis.yml

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ language: python
22
python:
33
- "2.6"
44
- "2.7"
5-
- "3.3"
65
- "3.4"
6+
- "3.5"
7+
- "3.6"
78
install:
89
- pip install -r requirements.txt
910
- pip install codecov pytest-cov

oauth2/__init__.py

+6-2
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
@@ -491,8 +492,8 @@ def sign_request(self, signature_method, consumer, token):
491492
# oauth_body_hash parameter on requests with form-encoded
492493
# request bodies."
493494
if not self.body:
494-
self.body = ''.encode('utf-8')
495-
self['oauth_body_hash'] = base64.b64encode(sha1(self.body).digest())
495+
self.body = ''
496+
self['oauth_body_hash'] = base64.b64encode(sha1(to_utf8(self.body)).digest())
496497

497498
if 'oauth_consumer_key' not in self:
498499
self['oauth_consumer_key'] = consumer.key
@@ -542,6 +543,7 @@ def from_request(cls, http_method, http_url, headers=None, parameters=None,
542543
# GET or POST query string.
543544
if query_string:
544545
query_params = cls._split_url_string(query_string)
546+
545547
parameters.update(query_params)
546548

547549
# URL parameters.
@@ -759,6 +761,8 @@ def _check_signature(self, request, consumer, token):
759761
signature = request.get('oauth_signature')
760762
if signature is None:
761763
raise MissingSignature('Missing oauth_signature.')
764+
if isinstance(signature, str):
765+
signature = signature.encode('ascii', 'ignore')
762766

763767
# Validate the signature.
764768
valid = signature_method.check(request, consumer, token, signature)

tests/test_oauth.py

+14-2
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)