summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChangBo Guo(gcb) <eric.guo@easystack.cn>2017-04-05 23:12:13 +0800
committerChangBo Guo(gcb) <eric.guo@easystack.cn>2017-04-13 20:57:50 +0800
commitfed29257358f990dd91eccd9be08e4cbcea53dca (patch)
treea7d256928da585b8b778edd6b43ede5b52dc3209
parent2dc2cf3c31ca14ac2d4894b1cd98a4d8e4a76b9d (diff)
downloadoslo-middleware-fed29257358f990dd91eccd9be08e4cbcea53dca.tar.gz
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] https://github.com/Pylons/webob/commit/0e6fcbfbc58af6fdd4e125543bf8f5fb91b984c6 [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
-rw-r--r--oslo_middleware/sizelimit.py2
-rw-r--r--oslo_middleware/tests/test_sizelimit.py6
2 files changed, 1 insertions, 7 deletions
diff --git a/oslo_middleware/sizelimit.py b/oslo_middleware/sizelimit.py
index bba9886..026b709 100644
--- a/oslo_middleware/sizelimit.py
+++ b/oslo_middleware/sizelimit.py
@@ -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
diff --git a/oslo_middleware/tests/test_sizelimit.py b/oslo_middleware/tests/test_sizelimit.py
index 42622ae..3d57a61 100644
--- a/oslo_middleware/tests/test_sizelimit.py
+++ b/oslo_middleware/tests/test_sizelimit.py
@@ -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)