sizelimit: port to Python 3
In the tests, use bytes for the request body, since that is what is used by webob in Python 3. In RequestBodySizeLimiter.__call__(), do not compare NoneType to an integer: it is forbidden in Python 3. Instead, properly handle the fact that req.content_lenght might be None. Change-Id: I179997789b9e2fcd3f3326e4d724e547c807f195
This commit is contained in:
parent
db7390dc7b
commit
75ee27a1d1
|
@ -71,7 +71,8 @@ class RequestBodySizeLimiter(base.Middleware):
|
|||
|
||||
@webob.dec.wsgify
|
||||
def __call__(self, req):
|
||||
if req.content_length > CONF.max_request_body_size:
|
||||
if (req.content_length is not None and
|
||||
req.content_length > CONF.max_request_body_size):
|
||||
msg = _("Request is too large.")
|
||||
raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg)
|
||||
if req.content_length is None and req.is_body_readable:
|
||||
|
|
|
@ -82,18 +82,18 @@ class TestRequestBodySizeLimiter(test.BaseTestCase):
|
|||
|
||||
def test_content_length_acceptable(self):
|
||||
self.request.headers['Content-Length'] = self.MAX_REQUEST_BODY_SIZE
|
||||
self.request.body = "0" * self.MAX_REQUEST_BODY_SIZE
|
||||
self.request.body = b"0" * self.MAX_REQUEST_BODY_SIZE
|
||||
response = self.request.get_response(self.middleware)
|
||||
self.assertEqual(response.status_int, 200)
|
||||
|
||||
def test_content_length_too_large(self):
|
||||
self.request.headers['Content-Length'] = self.MAX_REQUEST_BODY_SIZE + 1
|
||||
self.request.body = "0" * (self.MAX_REQUEST_BODY_SIZE + 1)
|
||||
self.request.body = b"0" * (self.MAX_REQUEST_BODY_SIZE + 1)
|
||||
response = self.request.get_response(self.middleware)
|
||||
self.assertEqual(response.status_int, 413)
|
||||
|
||||
def test_request_too_large_no_content_length(self):
|
||||
self.request.body = "0" * (self.MAX_REQUEST_BODY_SIZE + 1)
|
||||
self.request.body = b"0" * (self.MAX_REQUEST_BODY_SIZE + 1)
|
||||
self.request.headers['Content-Length'] = None
|
||||
response = self.request.get_response(self.middleware)
|
||||
self.assertEqual(response.status_int, 413)
|
||||
|
|
1
tox.ini
1
tox.ini
|
@ -72,6 +72,7 @@ commands =
|
|||
tests/unit/middleware/test_correlation_id.py \
|
||||
tests/unit/middleware/test_notifier.py \
|
||||
tests/unit/middleware/test_request_id.py \
|
||||
tests/unit/middleware/test_sizelimit.py \
|
||||
tests/unit/rpc/test_dispatcher.py \
|
||||
tests/unit/scheduler/test_base_filter.py \
|
||||
tests/unit/scheduler/test_host_filters.py \
|
||||
|
|
Loading…
Reference in New Issue