Skip to content

Commit

Permalink
Add and use a _makePostEnviron test helper.
Browse files Browse the repository at this point in the history
  • Loading branch information
hannosch committed May 31, 2017
1 parent 08b2b90 commit 3c6ed99
Showing 1 changed file with 26 additions and 15 deletions.
41 changes: 26 additions & 15 deletions src/ZPublisher/tests/testHTTPRequest.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ def _getTargetClass(self):
from ZPublisher.HTTPRequest import HTTPRequest
return HTTPRequest

def _makePostEnviron(self, body=b''):
environ = TEST_POST_ENVIRON.copy()
environ['CONTENT_LENGTH'] = str(len(body))
return environ

def _makeOne(self, stdin=None, environ=None, response=None, clean=1):
from ZPublisher.HTTPResponse import HTTPResponse
if stdin is None:
Expand Down Expand Up @@ -749,8 +754,7 @@ def test_close_removes_stdin_references(self):
s = BytesIO(TEST_FILE_DATA)
start_count = sys.getrefcount(s)

environ = TEST_ENVIRON.copy()
environ['CONTENT_LENGTH'] = str(len(TEST_FILE_DATA))
environ = self._makePostEnviron(body=TEST_FILE_DATA)
req = self._makeOne(stdin=s, environ=environ)
req.processInputs()
self.assertNotEqual(start_count, sys.getrefcount(s)) # Precondition
Expand All @@ -761,8 +765,7 @@ def test_processInputs_w_large_input_gets_tempfile(self):
# checks fileupload object supports the filename
s = BytesIO(TEST_LARGEFILE_DATA)

environ = TEST_ENVIRON.copy()
environ['CONTENT_LENGTH'] = str(len(TEST_LARGEFILE_DATA))
environ = self._makePostEnviron(body=TEST_LARGEFILE_DATA)
req = self._makeOne(stdin=s, environ=environ)
req.processInputs()
f = req.form.get('largefile')
Expand All @@ -773,8 +776,7 @@ def test_processInputs_with_file_upload_gets_iterator(self):
# collector entry 1837
s = BytesIO(TEST_FILE_DATA)

environ = TEST_ENVIRON.copy()
environ['CONTENT_LENGTH'] = str(len(TEST_FILE_DATA))
environ = self._makePostEnviron(body=TEST_FILE_DATA)
req = self._makeOne(stdin=s, environ=environ)
req.processInputs()
f = req.form.get('smallfile')
Expand Down Expand Up @@ -984,30 +986,36 @@ def test_getClientAddr_trusted_proxy_no_REMOTE_ADDR(self):
trusted_proxies[:] = orig

def test_getHeader_exact(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('content-type'),
'multipart/form-data; boundary=12345')

def test_getHeader_case_insensitive(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('Content-Type'),
'multipart/form-data; boundary=12345')

def test_getHeader_underscore_is_dash(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('content_type'),
'multipart/form-data; boundary=12345')

def test_getHeader_literal_turns_off_case_normalization(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('Content-Type', literal=True), None)

def test_getHeader_nonesuch(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('none-such'), None)

def test_getHeader_nonesuch_with_default(self):
request = self._makeOne(environ=TEST_ENVIRON.copy())
environ = self._makePostEnviron()
request = self._makeOne(environ=environ)
self.assertEqual(request.getHeader('Not-existant', default='Whatever'),
'Whatever')

Expand Down Expand Up @@ -1041,15 +1049,17 @@ def test_clone_keeps_only_last_PARENT(self):
def test_clone_preserves_response_class(self):
class DummyResponse:
pass
request = self._makeOne(None, TEST_ENVIRON.copy(), DummyResponse())
environ = self._makePostEnviron()
request = self._makeOne(None, environ, DummyResponse())
request['PARENTS'] = [object()]
clone = request.clone()
self.assertIsInstance(clone.response, DummyResponse)

def test_clone_preserves_request_subclass(self):
class SubRequest(self._getTargetClass()):
pass
request = SubRequest(None, TEST_ENVIRON.copy(), None)
environ = self._makePostEnviron()
request = SubRequest(None, environ, None)
request['PARENTS'] = [object()]
clone = request.clone()
self.assertIsInstance(clone, SubRequest)
Expand Down Expand Up @@ -1141,8 +1151,9 @@ def test_no_traversal_of_view_request_attribute(self):
)


TEST_ENVIRON = {
TEST_POST_ENVIRON = {
'CONTENT_TYPE': 'multipart/form-data; boundary=12345',
'CONTENT_LENGTH': None,
'REQUEST_METHOD': 'POST',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '80',
Expand Down

0 comments on commit 3c6ed99

Please sign in to comment.