From: Kenneth Reitz Date: Wed, 15 Feb 2012 06:25:29 +0000 (-0500) Subject: Merge branch '400-header_expand-unicode' of https://github.com/acdha/requests into... X-Git-Tag: v0.10.2~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b6f1b091c933a8bbc99b3e2b7e5cdc19aac9d68;p=services%2Fpython-requests.git Merge branch '400-header_expand-unicode' of https://github.com/acdha/requests into develop --- 1b6f1b091c933a8bbc99b3e2b7e5cdc19aac9d68 diff --cc test_requests.py index 0b5edcc,59069f3..909f5ff mode 100644,100755..100755 --- a/test_requests.py +++ b/test_requests.py @@@ -111,79 -111,17 +111,84 @@@ class RequestsTestSuite(TestSetup, unit r = get(httpbin('get') + '?test=true', params={'q': 'test'}, headers=heads) self.assertEqual(r.status_code, 200) - def test_session_with_unicode_headers(self): - heads = { u'User-Agent': u'\u30cd\u30c3\u30c8\u30ef\u30fc\u30af' } - + def test_unicode_headers(self): + # Simply calling requests with a unicode instance should simply work + # when the characters are all representable using latin-1: + heads = { u'User-Agent': u'Requests Test Suite' } requests.get(url=httpbin('get'), headers=heads) + # Characters outside latin-1 should raise an exception: + heads = { u'User-Agent': u'\u30cd\u30c3\u30c8\u30ef\u30fc\u30af' } + self.assertRaises(UnicodeEncodeError, requests.get, + url=httpbin('get'), headers=heads) + def test_session_with_escaped_url(self): + # Test a URL that contains percent-escaped characters + # This URL should not be modified (double-escaped) + # Tests: + # - Quoted illegal characters ("%20" (' '), "%3C" ('<'), "%3E" ('>')) + # - Quoted reserved characters ("%25" ('%'), "%23" ('#'), "%2F" ('/')) + # - Quoted non-ASCII characters ("%C3%98", "%C3%A5") + path_fully_escaped = '%3Ca%25b%23c%2Fd%3E/%C3%98%20%C3%A5' + url = httpbin('get/' + path_fully_escaped) + response = get(url) + self.assertEqual(response.url, httpbin('get/' + path_fully_escaped)) + + # Test that illegal characters in a path get properly percent-escaped + # Tests: + # - Bare illegal characters (space, '<') + # - Bare non-ASCII characters ('\u00d8') + path = u'