fixed param handling in Request.full_url

This commit is contained in:
Matthias Rahlf
2012-07-10 01:06:02 +02:00
parent b7fd0e81fd
commit 08cebb3c2f
3 changed files with 16 additions and 5 deletions
+1
View File
@@ -105,3 +105,4 @@ Patches and Suggestions
- Danilo Bargen (gwrtheyrn)
- Torsten Landschoff
- Michael Holler (apotheos)
- Matthias Rahlf <matthias@webding.de>
+5 -5
View File
@@ -395,14 +395,14 @@ class Request(object):
if isinstance(fragment, str):
fragment = fragment.encode('utf-8')
url = (urlunparse([scheme, netloc, path, params, query, fragment]))
enc_params = self._encode_params(self.params)
if enc_params:
if urlparse(url).query:
url = '%s&%s' % (url, enc_params)
if query:
query = '%s&%s' % (query, enc_params)
else:
url = '%s?%s' % (url, enc_params)
query = enc_params
url = (urlunparse([scheme, netloc, path, params, query, fragment]))
if self.config.get('encode_uri', True):
url = requote_uri(url)
+10
View File
@@ -83,6 +83,16 @@ class RequestsTestSuite(TestSetup, TestBaseMixin, unittest.TestCase):
self.assertEqual(request.path_url, "/get/test%20case")
def test_params_are_added_before_fragment(self):
request = requests.Request(
"http://example.com/path#fragment", params={"a": "b"})
self.assertEqual(request.full_url,
"http://example.com/path?a=b#fragment")
request = requests.Request(
"http://example.com/path?key=value#fragment", params={"a": "b"})
self.assertEqual(request.full_url,
"http://example.com/path?key=value&a=b#fragment")
def test_HTTP_200_OK_GET(self):
r = get(httpbin('get'))
self.assertEqual(r.status_code, 200)