aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorClemens <cle1000.cb@gmail.com>2016-08-03 12:17:19 +0200
committerClemens <cle1000.cb@gmail.com>2016-08-03 12:17:19 +0200
commite036bc9304c76b63169da11c6721745484d6da10 (patch)
treeb0c882fb3a18aa7d63b1e5d05486fd734057c35b /test
parent34fe391afbe18f89d774137f82620024f697ab6a (diff)
downloadmitmproxy-e036bc9304c76b63169da11c6721745484d6da10.tar.gz
mitmproxy-e036bc9304c76b63169da11c6721745484d6da10.tar.bz2
mitmproxy-e036bc9304c76b63169da11c6721745484d6da10.zip
integrate simplified contentviews
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/builtins/test_dumper.py11
-rw-r--r--test/mitmproxy/test_contentview.py100
2 files changed, 64 insertions, 47 deletions
diff --git a/test/mitmproxy/builtins/test_dumper.py b/test/mitmproxy/builtins/test_dumper.py
index 6287fe86..2d551bab 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()
@@ -82,4 +81,4 @@ class TestContentView(mastertest.MasterTest):
d = dumper.Dumper()
m.addons.add(o, d)
self.invoke(m, "response", tutils.tflow())
- assert "Content viewer failed" in m.event_log[0][1]
+ assert "Content viewer failed" in m.event_log[0][1] \ No newline at end of file
diff --git a/test/mitmproxy/test_contentview.py b/test/mitmproxy/test_contentview.py
index aad53b37..8e2042fb 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
@@ -78,6 +80,7 @@ class TestContentView:
v = cv.ViewHTMLOutline()
s = b"<html><br><br></br><p>one</p></html>"
assert v(s)
+ assert v(b'\xfe')
def test_view_json(self):
cv.VIEW_CUTOFF = 100
@@ -106,9 +109,10 @@ class TestContentView:
def test_view_javascript(self):
v = cv.ViewJavaScript()
- assert v("[1, 2, 3]")
- assert v("[1, 2, 3")
- assert v("function(a){[1, 2, 3]}")
+ assert v(b"[1, 2, 3]")
+ assert v(b"[1, 2, 3")
+ assert v(b"function(a){[1, 2, 3]}")
+ assert v(b"\xfe") # invalid utf-8
def test_view_css(self):
v = cv.ViewCSS()
@@ -178,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"
@@ -231,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()
@@ -264,4 +282,4 @@ def test_pretty_json():
assert cv.pretty_json(b'{"foo": 1}')
assert not cv.pretty_json(b"moo")
assert cv.pretty_json(b'{"foo" : "\xe4\xb8\x96\xe7\x95\x8c"}') # utf8 with chinese characters
- assert not cv.pretty_json(b'{"foo" : "\xFF"}')
+ assert not cv.pretty_json(b'{"foo" : "\xFF"}') \ No newline at end of file