aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/builtins/test_dumper.py9
-rw-r--r--test/mitmproxy/test_contentview.py90
2 files changed, 57 insertions, 42 deletions
diff --git a/test/mitmproxy/builtins/test_dumper.py b/test/mitmproxy/builtins/test_dumper.py
index 6287fe86..1c7173e0 100644
--- a/test/mitmproxy/builtins/test_dumper.py
+++ b/test/mitmproxy/builtins/test_dumper.py
@@ -15,7 +15,7 @@ class TestDumper(mastertest.MasterTest):
d = dumper.Dumper()
sio = StringIO()
- updated = set(["tfile", "flow_detail"])
+ updated = {"tfile", "flow_detail"}
d.configure(dump.Options(tfile = sio, flow_detail = 0), updated)
d.response(tutils.tflow())
assert not sio.getvalue()
@@ -66,10 +66,9 @@ class TestDumper(mastertest.MasterTest):
class TestContentView(mastertest.MasterTest):
- @mock.patch("mitmproxy.contentviews.get_content_view")
- def test_contentview(self, get_content_view):
- se = exceptions.ContentViewException(""), ("x", iter([]))
- get_content_view.side_effect = se
+ @mock.patch("mitmproxy.contentviews.ViewAuto.__call__")
+ def test_contentview(self, view_auto):
+ view_auto.side_effect = exceptions.ContentViewException("")
s = state.State()
sio = StringIO()
diff --git a/test/mitmproxy/test_contentview.py b/test/mitmproxy/test_contentview.py
index 66cad47b..f0afdc0b 100644
--- a/test/mitmproxy/test_contentview.py
+++ b/test/mitmproxy/test_contentview.py
@@ -1,3 +1,4 @@
+import mock
from mitmproxy.exceptions import ContentViewException
from netlib.http import Headers
from netlib.http import url
@@ -5,6 +6,7 @@ from netlib import multidict
import mitmproxy.contentviews as cv
from . import tutils
+import netlib.tutils
try:
import pyamf
@@ -180,43 +182,6 @@ Larry
assert f[0] == "Query"
assert [x for x in f[1]] == [[("header", "foo: "), ("text", "bar")]]
- def test_get_content_view(self):
- r = cv.get_content_view(
- cv.get("Raw"),
- b"[1, 2, 3]",
- headers=Headers(content_type="application/json")
- )
- assert "Raw" in r[0]
-
- r = cv.get_content_view(
- cv.get("Auto"),
- b"[1, 2, 3]",
- headers=Headers(content_type="application/json")
- )
- assert r[0] == "JSON"
-
- r = cv.get_content_view(
- cv.get("Auto"),
- b"[1, 2",
- headers=Headers(content_type="application/json")
- )
- assert "Raw" in r[0]
-
- r = cv.get_content_view(
- cv.get("Auto"),
- b"[1, 2, 3]",
- headers=Headers(content_type="application/vnd.api+json")
- )
- assert r[0] == "JSON"
-
- tutils.raises(
- ContentViewException,
- cv.get_content_view,
- cv.get("AMF"),
- b"[1, 2",
- headers=Headers()
- )
-
def test_add_cv(self):
class TestContentView(cv.View):
name = "test"
@@ -233,6 +198,57 @@ Larry
)
+def test_get_content_view():
+ desc, lines, err = cv.get_content_view(
+ cv.get("Raw"),
+ b"[1, 2, 3]",
+ )
+ assert "Raw" in desc
+ assert list(lines)
+ assert not err
+
+ desc, lines, err = cv.get_content_view(
+ cv.get("Auto"),
+ b"[1, 2, 3]",
+ headers=Headers(content_type="application/json")
+ )
+ assert desc == "JSON"
+
+ desc, lines, err = cv.get_content_view(
+ cv.get("JSON"),
+ b"[1, 2",
+ )
+ assert "Couldn't parse" in desc
+
+ with mock.patch("mitmproxy.contentviews.ViewAuto.__call__") as view_auto:
+ view_auto.side_effect = ValueError
+
+ desc, lines, err = cv.get_content_view(
+ cv.get("JSON"),
+ b"[1, 2",
+ )
+ assert err
+ assert "Couldn't parse" in desc
+
+
+def test_get_message_content_view():
+ r = netlib.tutils.treq()
+ desc, lines, err = cv.get_message_content_view(cv.get("Raw"), r)
+ assert desc == "Raw"
+
+ r.encode("gzip")
+ desc, lines, err = cv.get_message_content_view(cv.get("Raw"), r)
+ assert desc == "[decoded gzip] Raw"
+
+ r.headers["content-encoding"] = "deflate"
+ desc, lines, err = cv.get_message_content_view(cv.get("Raw"), r)
+ assert desc == "[cannot decode] Raw"
+
+ r.content = None
+ desc, lines, err = cv.get_message_content_view(cv.get("Raw"), r)
+ assert list(lines) == [[("error", "content missing")]]
+
+
if pyamf:
def test_view_amf_request():
v = cv.ViewAMF()