mirror of
https://github.com/ansible/awx.git
synced 2026-01-21 22:48:02 -03:30
Merge pull request #70 from jangsutsr/5913_allow_parsing_null_json_data
Allow parsing null JSON data
This commit is contained in:
commit
580871a60b
@ -57,8 +57,10 @@ class JSONParser(parsers.JSONParser):
|
||||
|
||||
try:
|
||||
data = stream.read().decode(encoding)
|
||||
if not data:
|
||||
return {}
|
||||
obj = json.loads(data, object_pairs_hook=OrderedDict)
|
||||
if not isinstance(obj, dict):
|
||||
if not isinstance(obj, dict) and obj is not None:
|
||||
raise ParseError(_('JSON parse error - not a JSON object'))
|
||||
return obj
|
||||
except ValueError as exc:
|
||||
|
||||
29
awx/main/tests/unit/api/test_parsers.py
Normal file
29
awx/main/tests/unit/api/test_parsers.py
Normal file
@ -0,0 +1,29 @@
|
||||
import pytest
|
||||
import StringIO
|
||||
|
||||
# AWX
|
||||
from awx.api.parsers import JSONParser
|
||||
|
||||
# Django REST Framework
|
||||
from rest_framework.exceptions import ParseError
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'input_, output', [
|
||||
('{"foo": "bar"}', {'foo': 'bar'}),
|
||||
('null', None),
|
||||
('', {}),
|
||||
]
|
||||
)
|
||||
def test_jsonparser_valid_input(input_, output):
|
||||
input_stream = StringIO.StringIO(input_)
|
||||
assert JSONParser().parse(input_stream) == output
|
||||
input_stream.close()
|
||||
|
||||
|
||||
@pytest.mark.parametrize('invalid_input', ['1', '"foobar"', '3.14', '{"foo": "bar",}'])
|
||||
def test_json_parser_invalid_input(invalid_input):
|
||||
input_stream = StringIO.StringIO(invalid_input)
|
||||
with pytest.raises(ParseError):
|
||||
JSONParser().parse(input_stream)
|
||||
input_stream.close()
|
||||
Loading…
x
Reference in New Issue
Block a user