diff options
author | Brett <brett@nextglass.co> | 2014-05-24 22:31:28 -0400 |
---|---|---|
committer | Marcel Hellkamp <marc@gsites.de> | 2014-05-26 17:43:26 +0200 |
commit | 3ec966bb72e9f9fd8fe8a86428e6b3589c82b21f (patch) | |
tree | dff6742db0405efcc4cbc3153337c39724b3addd | |
parent | 5bf2ab25a39893d120fc8141722347279b3f6f27 (diff) | |
download | bottle-3ec966bb72e9f9fd8fe8a86428e6b3589c82b21f.tar.gz |
don't fail when request content type is application/json but the body is empty
-rw-r--r-- | bottle.py | 5 | ||||
-rwxr-xr-x | test/test_environ.py | 8 |
2 files changed, 12 insertions, 1 deletions
@@ -1122,7 +1122,10 @@ class BaseRequest(object): exhaustion. """ ctype = self.environ.get('CONTENT_TYPE', '').lower().split(';')[0] if ctype == 'application/json': - return json_loads(self._get_body_string()) + b = self._get_body_string() + if not b: + return None + return json_loads(b) return None def _iter_body(self, read, bufsize): diff --git a/test/test_environ.py b/test/test_environ.py index c760f76..03ec86c 100755 --- a/test/test_environ.py +++ b/test/test_environ.py @@ -394,6 +394,14 @@ class TestRequest(unittest.TestCase): e['CONTENT_LENGTH'] = str(len(json_dumps(test))) self.assertEqual(BaseRequest(e).json, None) + def test_json_header_empty_body(self): + """Request Content-Type is application/json but body is empty""" + e = {'CONTENT_TYPE': 'application/json'} + wsgiref.util.setup_testing_defaults(e) + wsgiref.util.setup_testing_defaults(e) + e['CONTENT_LENGTH'] = "0" + self.assertEqual(BaseRequest(e).json, None) + def test_isajax(self): e = {} wsgiref.util.setup_testing_defaults(e) |