Skip to content

Commit

Permalink
Persist headers, explicitly set by user only
Browse files Browse the repository at this point in the history
  • Loading branch information
kedder committed Apr 18, 2013
1 parent 2d37a28 commit 9abbbd7
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 9 deletions.
25 changes: 17 additions & 8 deletions src/zope/testbrowser/browser.py
Expand Up @@ -123,6 +123,7 @@ class Browser(SetattrErrorsMixin):
_counter = 0
_response = None
_req_headers = None
_req_content_type = None
_history = None
__html = None

Expand Down Expand Up @@ -244,7 +245,7 @@ def open(self, url, data=None):

def post(self, url, data, content_type=None):
if content_type is not None:
self.addHeader('Content-Type', content_type)
self._req_content_type = content_type
return self.open(url, data)

def _clickSubmit(self, form, control=None, coord=None):
Expand Down Expand Up @@ -462,28 +463,36 @@ def _changed(self):
self._contents = None
self._controls = {}
self.__html = None
self._req_content_type = None

@contextmanager
def _preparedRequest(self, url):
self.timer.start()

headers = {}
if self.url:
self._req_headers['Referer'] = self.url
headers['Referer'] = self.url

if self._req_content_type:
headers['Content-Type'] = self._req_content_type

headers['Connection'] = 'close'
headers['Host'] = urlparse.urlparse(url).netloc
headers['User-Agent'] = 'Python-urllib/2.4'

self._req_headers['Connection'] = 'close'
self._req_headers['Host'] = urlparse.urlparse(url).netloc
self._req_headers['User-Agent'] = 'Python-urllib/2.4'
headers.update(self._req_headers)

extra_environ = {}
if self.handleErrors:
extra_environ['paste.throw_errors'] = None
self._req_headers['X-zope-handle-errors'] = 'True'
headers['X-zope-handle-errors'] = 'True'
else:
extra_environ['wsgi.handleErrors'] = False
extra_environ['paste.throw_errors'] = True
extra_environ['x-wsgiorg.throw_errors'] = True
self._req_headers.pop('X-zope-handle-errors', None)
headers.pop('X-zope-handle-errors', None)

kwargs = {'headers': sorted(self._req_headers.items()),
kwargs = {'headers': sorted(headers.items()),
'extra_environ': extra_environ,
'expect_errors': True}

Expand Down
2 changes: 1 addition & 1 deletion src/zope/testbrowser/tests/test_browser.py
Expand Up @@ -906,7 +906,7 @@ def test_post_encoding_doesnt_leak_between_requests(self):
The content_type of the last post should come from the form's enctype attr:
>>> print(app.last_environ['CONTENT_TYPE'])
multipart/form-data
multipart/form-data...
"""


Expand Down

0 comments on commit 9abbbd7

Please sign in to comment.