Fix test_request_too_large_no_content_length failure

Webob >=1.7.0 change its way to check if body is readable [1],
The is_body_readable() method returns False now. request.content_length
will be set when set request.body automatically, and if
request.context_length is None request.body will return returns b''.[3]
So just set request.body in test.

[1] 0e6fcbfbc5
[2] https://github.com/Pylons/webob/blame/master/webob/request.py#L699
[3] https://github.com/Pylons/webob/blame/master/webob/request.py#L692

Closes-Bug: #1679658

Change-Id: I4e0932dd8664d96b2733c5d3b1fa846af0c7d132
This commit is contained in:
ChangBo Guo(gcb) 2017-04-05 23:12:13 +08:00
parent 2dc2cf3c31
commit fed2925735
2 changed files with 1 additions and 7 deletions

View File

@ -89,7 +89,7 @@ class RequestBodySizeLimiter(base.ConfigurableMiddleware):
req.content_length > max_size):
msg = _("Request is too large.")
raise webob.exc.HTTPRequestEntityTooLarge(explanation=msg)
if req.content_length is None and req.is_body_readable:
if req.content_length is None:
limiter = LimitingReader(req.body_file, max_size)
req.body_file = limiter
return self.application

View File

@ -100,9 +100,3 @@ class TestRequestBodySizeLimiter(test_base.BaseTestCase):
self.request.body = b"0" * (self.MAX_REQUEST_BODY_SIZE + 1)
response = self.request.get_response(self.middleware)
self.assertEqual(413, response.status_int)
def test_request_too_large_no_content_length(self):
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(413, response.status_int)