Skip to content

Commit 992e5e7

Browse files
committed
add work-around for bug unicode-handling in urlparse in Python < 2.7, including tests
1 parent 7734089 commit 992e5e7

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

oauth2/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ def _split_header(header):
582582
@staticmethod
583583
def _split_url_string(param_str):
584584
"""Turn URL string into parameters."""
585-
parameters = parse_qs(param_str, keep_blank_values=False)
585+
parameters = parse_qs(param_str.encode('utf-8'), keep_blank_values=False)
586586
for k, v in parameters.iteritems():
587587
parameters[k] = urllib.unquote(v[0])
588588
return parameters

tests/test_oauth.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,18 @@ def test_signature_base_string_nonascii_nonutf8(self):
495495
req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, None)
496496
self.failUnlessReallyEqual(req['oauth_signature'], 'WhufgeZKyYpKsI70GZaiDaYwl6g=')
497497

498+
url = 'http://api.simplegeo.com:80/1.0/places/address.json?q=monkeys&category=animal&address=41+Decatur+St,+San+Francisc%E2%9D%A6,+CA'
499+
req = oauth.Request("GET", url)
500+
self.failUnlessReallyEqual(req.normalized_url, u'http://api.simplegeo.com/1.0/places/address.json')
501+
req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, None)
502+
self.failUnlessReallyEqual(req['oauth_signature'], 'WhufgeZKyYpKsI70GZaiDaYwl6g=')
503+
504+
url = u'http://api.simplegeo.com:80/1.0/places/address.json?q=monkeys&category=animal&address=41+Decatur+St,+San+Francisc%E2%9D%A6,+CA'
505+
req = oauth.Request("GET", url)
506+
self.failUnlessReallyEqual(req.normalized_url, u'http://api.simplegeo.com/1.0/places/address.json')
507+
req.sign_request(oauth.SignatureMethod_HMAC_SHA1(), consumer, None)
508+
self.failUnlessReallyEqual(req['oauth_signature'], 'WhufgeZKyYpKsI70GZaiDaYwl6g=')
509+
498510
def test_signature_base_string_with_query(self):
499511
url = "https://www.google.com/m8/feeds/contacts/default/full/?alt=json&max-contacts=10"
500512
params = {

0 commit comments

Comments
 (0)