summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGael Pasgrimaud <gael@gawel.org>2020-01-23 19:22:56 +0100
committerGitHub <noreply@github.com>2020-01-23 19:22:56 +0100
commit7408b1cb36312eeef90574f723424ab892f8e06f (patch)
tree517794fddc4cc2bbe60b09257744ac1559b302b5
parentf01ed4b08f456fa4b9767254af12da70bde73d41 (diff)
parent8f874a6f56422e15df8438da7d1352b4a77585e0 (diff)
downloadwebtest-7408b1cb36312eeef90574f723424ab892f8e06f.tar.gz
Merge pull request #221 from Natim/220-add-head-params
Add queryparams to the head method.
-rw-r--r--CHANGELOG.rst2
-rw-r--r--webtest/app.py13
-rw-r--r--webtest/utils.py11
3 files changed, 17 insertions, 9 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 43506f9..13a0bd8 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -8,6 +8,8 @@ News
- Treat ``<input type="search">`` like ``<input type="text">``.
+- Handle query parameters for the ``head`` method.
+
2.0.33 (2019-02-09)
-------------------
diff --git a/webtest/app.py b/webtest/app.py
index 2116efe..895f255 100644
--- a/webtest/app.py
+++ b/webtest/app.py
@@ -26,7 +26,6 @@ from six import text_type
from six.moves import http_cookiejar
from webtest.compat import urlparse
-from webtest.compat import urlencode
from webtest.compat import to_bytes
from webtest.compat import escape_cookie_value
from webtest.response import TestResponse
@@ -315,13 +314,7 @@ class TestApp(object):
url = str(url)
url = self._remove_fragment(url)
if params:
- if not isinstance(params, string_types):
- params = urlencode(params, doseq=True)
- if str('?') in url:
- url += str('&')
- else:
- url += str('?')
- url += params
+ url = utils.build_params(url, params)
if str('?') in url:
url, environ['QUERY_STRING'] = url.split(str('?'), 1)
else:
@@ -448,7 +441,7 @@ class TestApp(object):
upload_files=None,
expect_errors=expect_errors)
- def head(self, url, headers=None, extra_environ=None,
+ def head(self, url, params=None, headers=None, extra_environ=None,
status=None, expect_errors=False, xhr=False):
"""
Do a HEAD request. Similar to :meth:`~webtest.TestApp.get`.
@@ -456,6 +449,8 @@ class TestApp(object):
:returns: :class:`webtest.TestResponse` instance.
"""
+ if params:
+ url = utils.build_params(url, params)
if xhr:
headers = self._add_xhr_header(headers)
return self._gen_request('HEAD', url, headers=headers,
diff --git a/webtest/utils.py b/webtest/utils.py
index 9ae1377..d8f1f7f 100644
--- a/webtest/utils.py
+++ b/webtest/utils.py
@@ -80,6 +80,17 @@ def encode_params(params, content_type):
return params
+def build_params(url, params):
+ if not isinstance(params, six.string_types):
+ params = urlencode(params, doseq=True)
+ if str('?') in url:
+ url += str('&')
+ else:
+ url += str('?')
+ url += params
+ return url
+
+
def make_pattern(pat):
"""Find element pattern can be a regex or a callable."""
if pat is None: