summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGael Pasgrimaud <gael@gawel.org>2016-03-31 14:46:08 +0200
committerGael Pasgrimaud <gael@gawel.org>2016-03-31 14:46:08 +0200
commit43de66aaa7b4b6bef385bb89877653b45b621a58 (patch)
treecc5af762e06aa60f0d84c2ef019e97275db71325
parent4e76f55b9dd5ee6bc27b7a4f992f19e232c55a1a (diff)
parent10242ac5387beb0a52f96b09cd30055f82612bed (diff)
downloadwebtest-43de66aaa7b4b6bef385bb89877653b45b621a58.tar.gz
Merge pull request #148 from bdauvergne/referer
Add referer header to request made using response.click(), response.clickbutton() and form.submit()
-rw-r--r--tests/test_response.py14
-rw-r--r--webtest/forms.py2
-rw-r--r--webtest/response.py5
3 files changed, 20 insertions, 1 deletions
diff --git a/tests/test_response.py b/tests/test_response.py
index 05ec180..f73a281 100644
--- a/tests/test_response.py
+++ b/tests/test_response.py
@@ -259,6 +259,20 @@ class TestResponse(unittest.TestCase):
app.get('/').clickbutton, buttonid='button3'
)
+ def test_referer(self):
+ app = webtest.TestApp(links_app)
+ resp = app.get('/').click('Foo')
+ self.assertIn('Referer', resp.request.headers)
+ self.assertEqual(resp.request.headers['Referer'], 'http://localhost/')
+
+ resp = app.get('/').clickbutton(buttonid='button1')
+ self.assertIn('Referer', resp.request.headers)
+ self.assertEqual(resp.request.headers['Referer'], 'http://localhost/')
+
+ resp = app.get('/one_forms/').form.submit()
+ self.assertIn('Referer', resp.request.headers)
+ self.assertEqual(resp.request.headers['Referer'], 'http://localhost/one_forms/')
+
def test_xml_attribute(self):
app = webtest.TestApp(links_app)
diff --git a/webtest/forms.py b/webtest/forms.py
index e64c6f7..9ff0a17 100644
--- a/webtest/forms.py
+++ b/webtest/forms.py
@@ -603,6 +603,8 @@ class Form(object):
fields = self.submit_fields(name, index=index, submit_value=value)
if self.method.upper() != "GET":
args.setdefault("content_type", self.enctype)
+ extra_environ = args.setdefault('extra_environ', {})
+ extra_environ.setdefault('HTTP_REFERER', str(self.response.request.url))
return self.response.goto(self.action, method=self.method,
params=fields, **args)
diff --git a/webtest/response.py b/webtest/response.py
index bca7c6f..3952079 100644
--- a/webtest/response.py
+++ b/webtest/response.py
@@ -161,6 +161,8 @@ class TestResponse(webob.Response):
id=linkid,
href_pattern=href,
index=index, verbose=verbose)
+ extra_environ = extra_environ or {}
+ extra_environ.setdefault('HTTP_REFERER', str(self.request.url))
return self.goto(str(found_attrs['uri']), extra_environ=extra_environ)
def clickbutton(self, description=None, buttonid=None, href=None,
@@ -178,7 +180,8 @@ class TestResponse(webob.Response):
id=buttonid,
href_pattern=href,
index=index, verbose=verbose)
- return self.goto(str(found_attrs['uri']))
+ extra_environ = {'HTTP_REFERER': str(self.request.url)}
+ return self.goto(str(found_attrs['uri']), extra_environ=extra_environ)
def _find_element(self, tag, href_attr, href_extract,
content, id,