From 47602dc1a5949a41535bc562adb83279f33f0b73 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Fri, 11 Sep 2015 13:41:16 +0200 Subject: clean up tests --- test/test_console_common.py | 2 - test/test_console_contentview.py | 266 --------------------------------------- test/test_console_import.py | 5 - test/test_contentview.py | 266 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 266 insertions(+), 273 deletions(-) delete mode 100644 test/test_console_contentview.py delete mode 100644 test/test_console_import.py create mode 100644 test/test_contentview.py (limited to 'test') diff --git a/test/test_console_common.py b/test/test_console_common.py index 57cbef98..459539c5 100644 --- a/test/test_console_common.py +++ b/test/test_console_common.py @@ -3,10 +3,8 @@ from nose.plugins.skip import SkipTest if os.name == "nt": raise SkipTest("Skipped on Windows.") -from netlib import encoding import libmproxy.console.common as common -from libmproxy import utils, flow import tutils diff --git a/test/test_console_contentview.py b/test/test_console_contentview.py deleted file mode 100644 index ec1b4930..00000000 --- a/test/test_console_contentview.py +++ /dev/null @@ -1,266 +0,0 @@ -from libmproxy.exceptions import ContentViewException -from netlib.http import Headers - -import sys - -import netlib.utils -from netlib import encoding - -import libmproxy.contentview as cv -import tutils - -try: - import pyamf -except ImportError: - pyamf = None - -try: - import cssutils -except: - cssutils = None - - -class TestContentView: - def test_trailer(self): - txt = "X"*10 - lines = cv.trailer(txt, 1000) - assert not list(lines) - lines = cv.trailer(txt, 5) - assert list(lines) - - def test_view_auto(self): - v = cv.ViewAuto() - f = v( - Headers(), - "foo", - 1000 - ) - assert f[0] == "Raw" - - f = v( - Headers(content_type="text/html"), - "", - 1000 - ) - assert f[0] == "HTML" - - f = v( - Headers(content_type="text/flibble"), - "foo", - 1000 - ) - assert f[0] == "Raw" - - f = v( - Headers(content_type="text/flibble"), - "", - 1000 - ) - assert f[0].startswith("XML") - - def test_view_urlencoded(self): - d = netlib.utils.urlencode([("one", "two"), ("three", "four")]) - v = cv.ViewURLEncoded() - assert v([], d, 100) - d = netlib.utils.urlencode([("adsfa", "")]) - v = cv.ViewURLEncoded() - assert v([], d, 100) - - def test_view_html(self): - v = cv.ViewHTML() - s = "


one

" - assert v([], s, 1000) - - s = "gobbledygook" - assert not v([], s, 1000) - - def test_view_html_outline(self): - v = cv.ViewHTMLOutline() - s = "


one

" - assert v([], s, 1000) - - def test_view_json(self): - cv.VIEW_CUTOFF = 100 - v = cv.ViewJSON() - assert v([], "{}", 1000) - assert not v([], "{", 1000) - assert v([], "[" + ",".join(["0"] * cv.VIEW_CUTOFF) + "]", 1000) - assert v([], "[1, 2, 3, 4, 5]", 5) - - def test_view_xml(self): - v = cv.ViewXML() - assert v([], "", 1000) - assert not v([], "", 1000) - s = """ - - - - """ - assert v([], s, 1000) - - def test_view_raw(self): - v = cv.ViewRaw() - assert v([], "foo", 1000) - - def test_view_javascript(self): - v = cv.ViewJavaScript() - assert v([], "[1, 2, 3]", 100) - assert v([], "[1, 2, 3", 100) - assert v([], "function(a){[1, 2, 3]}", 100) - - def test_view_css(self): - v = cv.ViewCSS() - - with open(tutils.test_data.path('data/1.css'), 'r') as fp: - fixture_1 = fp.read() - - result = v([], 'a', 100) - - if cssutils: - assert len(list(result[1])) == 0 - else: - assert len(list(result[1])) == 1 - - result = v([], fixture_1, 100) - - if cssutils: - assert len(list(result[1])) > 1 - else: - assert len(list(result[1])) == 1 - - def test_view_hex(self): - v = cv.ViewHex() - assert v([], "foo", 1000) - - def test_view_image(self): - v = cv.ViewImage() - p = tutils.test_data.path("data/image.png") - assert v([], file(p, "rb").read(), sys.maxsize) - - p = tutils.test_data.path("data/image.gif") - assert v([], file(p, "rb").read(), sys.maxsize) - - p = tutils.test_data.path("data/image-err1.jpg") - assert v([], file(p, "rb").read(), sys.maxsize) - - p = tutils.test_data.path("data/image.ico") - assert v([], file(p, "rb").read(), sys.maxsize) - - assert not v([], "flibble", sys.maxsize) - - def test_view_multipart(self): - view = cv.ViewMultipart() - v = """ ---AaB03x -Content-Disposition: form-data; name="submit-name" - -Larry ---AaB03x - """.strip() - h = Headers(content_type="multipart/form-data; boundary=AaB03x") - assert view(h, v, 1000) - - h = Headers() - assert not view(h, v, 1000) - - h = Headers(content_type="multipart/form-data") - assert not view(h, v, 1000) - - h = Headers(content_type="unparseable") - assert not view(h, v, 1000) - - def test_get_content_view(self): - r = cv.get_content_view( - cv.get("Raw"), - Headers(content_type="application/json"), - "[1, 2, 3]", - 1000, - False - ) - assert "Raw" in r[0] - - r = cv.get_content_view( - cv.get("Auto"), - Headers(content_type="application/json"), - "[1, 2, 3]", - 1000, - False - ) - assert r[0] == "JSON" - - r = cv.get_content_view( - cv.get("Auto"), - Headers(content_type="application/json"), - "[1, 2", - 1000, - False - ) - assert "Raw" in r[0] - - tutils.raises( - ContentViewException, - cv.get_content_view, - cv.get("AMF"), - Headers(), - "[1, 2", - 1000, - False - ) - - r = cv.get_content_view( - cv.get("Auto"), - Headers( - content_type="application/json", - content_encoding="gzip" - ), - encoding.encode('gzip', "[1, 2, 3]"), - 1000, - False - ) - assert "decoded gzip" in r[0] - assert "JSON" in r[0] - - r = cv.get_content_view( - cv.get("XML"), - Headers( - content_type="application/json", - content_encoding="gzip" - ), - encoding.encode('gzip', "[1, 2, 3]"), - 1000, - False - ) - assert "decoded gzip" in r[0] - assert "Raw" in r[0] - - -if pyamf: - def test_view_amf_request(): - v = cv.ViewAMF() - - p = tutils.test_data.path("data/amf01") - assert v([], file(p, "rb").read(), sys.maxsize) - - p = tutils.test_data.path("data/amf02") - assert v([], file(p, "rb").read(), sys.maxsize) - - def test_view_amf_response(): - v = cv.ViewAMF() - p = tutils.test_data.path("data/amf03") - assert v([], file(p, "rb").read(), sys.maxsize) - -if cv.ViewProtobuf.is_available(): - def test_view_protobuf_request(): - v = cv.ViewProtobuf() - - p = tutils.test_data.path("data/protobuf01") - content_type, output = v([], file(p, "rb").read(), sys.maxsize) - assert content_type == "Protobuf" - assert output[0].text == '1: "3bbc333c-e61c-433b-819a-0b9a8cc103b8"' - - -def test_get_by_shortcut(): - assert cv.get_by_shortcut("h") diff --git a/test/test_console_import.py b/test/test_console_import.py deleted file mode 100644 index c99faae8..00000000 --- a/test/test_console_import.py +++ /dev/null @@ -1,5 +0,0 @@ -import libmproxy.contentview as cv - - -def test_pass(): - assert True diff --git a/test/test_contentview.py b/test/test_contentview.py new file mode 100644 index 00000000..ec1b4930 --- /dev/null +++ b/test/test_contentview.py @@ -0,0 +1,266 @@ +from libmproxy.exceptions import ContentViewException +from netlib.http import Headers + +import sys + +import netlib.utils +from netlib import encoding + +import libmproxy.contentview as cv +import tutils + +try: + import pyamf +except ImportError: + pyamf = None + +try: + import cssutils +except: + cssutils = None + + +class TestContentView: + def test_trailer(self): + txt = "X"*10 + lines = cv.trailer(txt, 1000) + assert not list(lines) + lines = cv.trailer(txt, 5) + assert list(lines) + + def test_view_auto(self): + v = cv.ViewAuto() + f = v( + Headers(), + "foo", + 1000 + ) + assert f[0] == "Raw" + + f = v( + Headers(content_type="text/html"), + "", + 1000 + ) + assert f[0] == "HTML" + + f = v( + Headers(content_type="text/flibble"), + "foo", + 1000 + ) + assert f[0] == "Raw" + + f = v( + Headers(content_type="text/flibble"), + "", + 1000 + ) + assert f[0].startswith("XML") + + def test_view_urlencoded(self): + d = netlib.utils.urlencode([("one", "two"), ("three", "four")]) + v = cv.ViewURLEncoded() + assert v([], d, 100) + d = netlib.utils.urlencode([("adsfa", "")]) + v = cv.ViewURLEncoded() + assert v([], d, 100) + + def test_view_html(self): + v = cv.ViewHTML() + s = "


one

" + assert v([], s, 1000) + + s = "gobbledygook" + assert not v([], s, 1000) + + def test_view_html_outline(self): + v = cv.ViewHTMLOutline() + s = "


one

" + assert v([], s, 1000) + + def test_view_json(self): + cv.VIEW_CUTOFF = 100 + v = cv.ViewJSON() + assert v([], "{}", 1000) + assert not v([], "{", 1000) + assert v([], "[" + ",".join(["0"] * cv.VIEW_CUTOFF) + "]", 1000) + assert v([], "[1, 2, 3, 4, 5]", 5) + + def test_view_xml(self): + v = cv.ViewXML() + assert v([], "", 1000) + assert not v([], "", 1000) + s = """ + + + + """ + assert v([], s, 1000) + + def test_view_raw(self): + v = cv.ViewRaw() + assert v([], "foo", 1000) + + def test_view_javascript(self): + v = cv.ViewJavaScript() + assert v([], "[1, 2, 3]", 100) + assert v([], "[1, 2, 3", 100) + assert v([], "function(a){[1, 2, 3]}", 100) + + def test_view_css(self): + v = cv.ViewCSS() + + with open(tutils.test_data.path('data/1.css'), 'r') as fp: + fixture_1 = fp.read() + + result = v([], 'a', 100) + + if cssutils: + assert len(list(result[1])) == 0 + else: + assert len(list(result[1])) == 1 + + result = v([], fixture_1, 100) + + if cssutils: + assert len(list(result[1])) > 1 + else: + assert len(list(result[1])) == 1 + + def test_view_hex(self): + v = cv.ViewHex() + assert v([], "foo", 1000) + + def test_view_image(self): + v = cv.ViewImage() + p = tutils.test_data.path("data/image.png") + assert v([], file(p, "rb").read(), sys.maxsize) + + p = tutils.test_data.path("data/image.gif") + assert v([], file(p, "rb").read(), sys.maxsize) + + p = tutils.test_data.path("data/image-err1.jpg") + assert v([], file(p, "rb").read(), sys.maxsize) + + p = tutils.test_data.path("data/image.ico") + assert v([], file(p, "rb").read(), sys.maxsize) + + assert not v([], "flibble", sys.maxsize) + + def test_view_multipart(self): + view = cv.ViewMultipart() + v = """ +--AaB03x +Content-Disposition: form-data; name="submit-name" + +Larry +--AaB03x + """.strip() + h = Headers(content_type="multipart/form-data; boundary=AaB03x") + assert view(h, v, 1000) + + h = Headers() + assert not view(h, v, 1000) + + h = Headers(content_type="multipart/form-data") + assert not view(h, v, 1000) + + h = Headers(content_type="unparseable") + assert not view(h, v, 1000) + + def test_get_content_view(self): + r = cv.get_content_view( + cv.get("Raw"), + Headers(content_type="application/json"), + "[1, 2, 3]", + 1000, + False + ) + assert "Raw" in r[0] + + r = cv.get_content_view( + cv.get("Auto"), + Headers(content_type="application/json"), + "[1, 2, 3]", + 1000, + False + ) + assert r[0] == "JSON" + + r = cv.get_content_view( + cv.get("Auto"), + Headers(content_type="application/json"), + "[1, 2", + 1000, + False + ) + assert "Raw" in r[0] + + tutils.raises( + ContentViewException, + cv.get_content_view, + cv.get("AMF"), + Headers(), + "[1, 2", + 1000, + False + ) + + r = cv.get_content_view( + cv.get("Auto"), + Headers( + content_type="application/json", + content_encoding="gzip" + ), + encoding.encode('gzip', "[1, 2, 3]"), + 1000, + False + ) + assert "decoded gzip" in r[0] + assert "JSON" in r[0] + + r = cv.get_content_view( + cv.get("XML"), + Headers( + content_type="application/json", + content_encoding="gzip" + ), + encoding.encode('gzip', "[1, 2, 3]"), + 1000, + False + ) + assert "decoded gzip" in r[0] + assert "Raw" in r[0] + + +if pyamf: + def test_view_amf_request(): + v = cv.ViewAMF() + + p = tutils.test_data.path("data/amf01") + assert v([], file(p, "rb").read(), sys.maxsize) + + p = tutils.test_data.path("data/amf02") + assert v([], file(p, "rb").read(), sys.maxsize) + + def test_view_amf_response(): + v = cv.ViewAMF() + p = tutils.test_data.path("data/amf03") + assert v([], file(p, "rb").read(), sys.maxsize) + +if cv.ViewProtobuf.is_available(): + def test_view_protobuf_request(): + v = cv.ViewProtobuf() + + p = tutils.test_data.path("data/protobuf01") + content_type, output = v([], file(p, "rb").read(), sys.maxsize) + assert content_type == "Protobuf" + assert output[0].text == '1: "3bbc333c-e61c-433b-819a-0b9a8cc103b8"' + + +def test_get_by_shortcut(): + assert cv.get_by_shortcut("h") -- cgit v1.2.3