Skip to content

Commit 1178db3

Browse files
committed
get_normalized_parameters() is required to exclude any oauth_signature that was already there, and it is required to preserve duplicate keys, even with identical values
ref joestump#46, fixes pull/49, thanks @zyegfryed
1 parent a84d2cf commit 1178db3

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

oauth2/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ def get_normalized_parameters(self):
451451
query = urlparse.urlparse(self.url)[4]
452452

453453
url_items = self._split_url_string(query).items()
454-
url_items = [(to_utf8(k), to_utf8(v)) for k, v in url_items ]
454+
url_items = [(to_utf8(k), to_utf8(v)) for k, v in url_items if k != 'oauth_signature' ]
455455
items.extend(url_items)
456456

457457
items.sort()
@@ -658,8 +658,8 @@ def request(self, uri, method="GET", body='', headers=None,
658658
else:
659659
headers.update(req.to_header(realm=realm))
660660

661-
return httplib2.Http.request(self, uri, method=method, body=body,
662-
headers=headers, redirections=redirections,
661+
return httplib2.Http.request(self, uri, method=method, body=body,
662+
headers=headers, redirections=redirections,
663663
connection_type=connection_type)
664664

665665

tests/test_oauth.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ def test_get_normalized_parameters_duplicate(self):
552552

553553
res = req.get_normalized_parameters()
554554

555-
expected='oauth_consumer_key=mykey&oauth_nonce=79815175&oauth_signature=spWLI%2FGQjid7sQVd5%2FarahRxzJg%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1295397962&oauth_version=1.0&offset=10&q=car'
555+
expected='oauth_consumer_key=mykey&oauth_nonce=79815175&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1295397962&oauth_version=1.0&offset=10&q=car'
556556

557557
self.assertEquals(expected, res)
558558

@@ -599,6 +599,7 @@ def test_get_normalized_parameters(self):
599599
'oauth_signature_method': "HMAC-SHA1",
600600
'oauth_token': "ad180jjd733klru7",
601601
'multi': ['FOO','BAR', u'\u00ae', '\xc2\xae'],
602+
'multi_same': ['FOO','FOO'],
602603
'uni_utf8_bytes': '\xc2\xae',
603604
'uni_unicode_object': u'\u00ae'
604605
}
@@ -607,7 +608,7 @@ def test_get_normalized_parameters(self):
607608

608609
res = req.get_normalized_parameters()
609610

610-
expected='multi=BAR&multi=FOO&multi=%C2%AE&multi=%C2%AE&oauth_consumer_key=0685bd9184jfhq22&oauth_nonce=4572616e48616d6d65724c61686176&oauth_signature_method=HMAC-SHA1&oauth_timestamp=137131200&oauth_token=ad180jjd733klru7&oauth_version=1.0&uni_unicode_object=%C2%AE&uni_utf8_bytes=%C2%AE'
611+
expected='multi=BAR&multi=FOO&multi=%C2%AE&multi=%C2%AE&multi_same=FOO&multi_same=FOO&oauth_consumer_key=0685bd9184jfhq22&oauth_nonce=4572616e48616d6d65724c61686176&oauth_signature_method=HMAC-SHA1&oauth_timestamp=137131200&oauth_token=ad180jjd733klru7&oauth_version=1.0&uni_unicode_object=%C2%AE&uni_utf8_bytes=%C2%AE'
611612

612613
self.assertEquals(expected, res)
613614

0 commit comments

Comments
 (0)