aboutsummaryrefslogtreecommitdiffstats
path: root/test/mitmproxy/contentviews/test_json.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/mitmproxy/contentviews/test_json.py')
-rw-r--r--test/mitmproxy/contentviews/test_json.py35
1 files changed, 30 insertions, 5 deletions
diff --git a/test/mitmproxy/contentviews/test_json.py b/test/mitmproxy/contentviews/test_json.py
index 3f522b7f..2b5bf86a 100644
--- a/test/mitmproxy/contentviews/test_json.py
+++ b/test/mitmproxy/contentviews/test_json.py
@@ -1,18 +1,43 @@
+from hypothesis import given
+from hypothesis.strategies import binary
+
from mitmproxy.contentviews import json
from . import full_eval
-def test_pretty_json():
- assert json.pretty_json(b'{"foo": 1}')
- assert not json.pretty_json(b"moo")
- assert json.pretty_json(b'{"foo" : "\xe4\xb8\x96\xe7\x95\x8c"}') # utf8 with chinese characters
- assert not json.pretty_json(b'{"foo" : "\xFF"}')
+def test_parse_json():
+ assert json.parse_json(b'{"foo": 1}')
+ assert json.parse_json(b'null') is None
+ assert json.parse_json(b"moo") is json.PARSE_ERROR
+ assert json.parse_json(b'{"foo" : "\xe4\xb8\x96\xe7\x95\x8c"}') # utf8 with chinese characters
+ assert json.parse_json(b'{"foo" : "\xFF"}') is json.PARSE_ERROR
+
+
+def test_format_json():
+ assert list(json.format_json({
+ "data": [
+ "str",
+ 42,
+ True,
+ False,
+ None,
+ {},
+ []
+ ]
+ }))
def test_view_json():
v = full_eval(json.ViewJSON())
+ assert v(b"null")
assert v(b"{}")
assert not v(b"{")
assert v(b"[1, 2, 3, 4, 5]")
assert v(b'{"foo" : 3}')
assert v(b'{"foo": true, "nullvalue": null}')
+
+
+@given(binary())
+def test_view_json_doesnt_crash(data):
+ v = full_eval(json.ViewJSON())
+ v(data)