diff options
Diffstat (limited to 'test/mitmproxy/console')
-rw-r--r-- | test/mitmproxy/console/__init__.py | 0 | ||||
-rw-r--r-- | test/mitmproxy/console/test_common.py | 10 | ||||
-rw-r--r-- | test/mitmproxy/console/test_console.py | 110 | ||||
-rw-r--r-- | test/mitmproxy/console/test_help.py | 16 | ||||
-rw-r--r-- | test/mitmproxy/console/test_palettes.py | 12 | ||||
-rw-r--r-- | test/mitmproxy/console/test_pathedit.py | 49 |
6 files changed, 197 insertions, 0 deletions
diff --git a/test/mitmproxy/console/__init__.py b/test/mitmproxy/console/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/test/mitmproxy/console/__init__.py diff --git a/test/mitmproxy/console/test_common.py b/test/mitmproxy/console/test_common.py new file mode 100644 index 00000000..ac4e0209 --- /dev/null +++ b/test/mitmproxy/console/test_common.py @@ -0,0 +1,10 @@ +import mitmproxy.console.common as common +from .. import tutils + + +@tutils.skip_appveyor +def test_format_flow(): + f = tutils.tflow(resp=True) + assert common.format_flow(f, True) + assert common.format_flow(f, True, hostheader=True) + assert common.format_flow(f, True, extended=True) diff --git a/test/mitmproxy/console/test_console.py b/test/mitmproxy/console/test_console.py new file mode 100644 index 00000000..b68dd811 --- /dev/null +++ b/test/mitmproxy/console/test_console.py @@ -0,0 +1,110 @@ +import gc + +import netlib.tutils +from mitmproxy import console +from mitmproxy.console import common + +from .. import tutils + + +class TestConsoleState: + + def test_flow(self): + """ + normal flow: + + connect -> request -> response + """ + c = console.ConsoleState() + f = self._add_request(c) + assert f in c.flows + assert c.get_focus() == (f, 0) + + def test_focus(self): + """ + normal flow: + + connect -> request -> response + """ + c = console.ConsoleState() + f = self._add_request(c) + + assert c.get_focus() == (f, 0) + assert c.get_from_pos(0) == (f, 0) + assert c.get_from_pos(1) == (None, None) + assert c.get_next(0) == (None, None) + + f2 = self._add_request(c) + assert c.get_focus() == (f, 0) + assert c.get_next(0) == (f2, 1) + assert c.get_prev(1) == (f, 0) + assert c.get_next(1) == (None, None) + + c.set_focus(0) + assert c.get_focus() == (f, 0) + c.set_focus(-1) + assert c.get_focus() == (f, 0) + c.set_focus(2) + assert c.get_focus() == (f2, 1) + + c.delete_flow(f2) + assert c.get_focus() == (f, 0) + c.delete_flow(f) + assert c.get_focus() == (None, None) + + def _add_request(self, state): + f = tutils.tflow() + return state.add_flow(f) + + def _add_response(self, state): + f = self._add_request(state) + f.response = netlib.tutils.tresp() + state.update_flow(f) + + def test_add_response(self): + c = console.ConsoleState() + f = self._add_request(c) + f.response = netlib.tutils.tresp() + c.focus = None + c.update_flow(f) + + def test_focus_view(self): + c = console.ConsoleState() + self._add_request(c) + self._add_response(c) + self._add_request(c) + self._add_response(c) + self._add_request(c) + self._add_response(c) + assert not c.set_limit("~s") + assert len(c.view) == 3 + assert c.focus == 0 + + def test_settings(self): + c = console.ConsoleState() + f = self._add_request(c) + c.add_flow_setting(f, "foo", "bar") + assert c.get_flow_setting(f, "foo") == "bar" + assert c.get_flow_setting(f, "oink") is None + assert c.get_flow_setting(f, "oink", "foo") == "foo" + assert len(c.flowsettings) == 1 + c.delete_flow(f) + del f + gc.collect() + assert len(c.flowsettings) == 0 + + +def test_format_keyvals(): + assert common.format_keyvals( + [ + ("aa", "bb"), + None, + ("cc", "dd"), + (None, "dd"), + (None, "dd"), + ] + ) + + +def test_options(): + assert console.Options(kill=True) diff --git a/test/mitmproxy/console/test_help.py b/test/mitmproxy/console/test_help.py new file mode 100644 index 00000000..3c1cc57c --- /dev/null +++ b/test/mitmproxy/console/test_help.py @@ -0,0 +1,16 @@ +import mitmproxy.console.help as help +from .. import tutils + + +@tutils.skip_appveyor +class TestHelp: + + def test_helptext(self): + h = help.HelpView(None) + assert h.helptext() + + def test_keypress(self): + h = help.HelpView([1, 2, 3]) + assert not h.keypress((0, 0), "q") + assert not h.keypress((0, 0), "?") + assert h.keypress((0, 0), "o") == "o" diff --git a/test/mitmproxy/console/test_palettes.py b/test/mitmproxy/console/test_palettes.py new file mode 100644 index 00000000..a99730fa --- /dev/null +++ b/test/mitmproxy/console/test_palettes.py @@ -0,0 +1,12 @@ +import mitmproxy.console.palettes as palettes +from .. import tutils + + +@tutils.skip_appveyor +class TestPalette: + + def test_helptext(self): + for i in palettes.palettes.values(): + assert i.palette(False) + for i in palettes.palettes.values(): + assert i.palette(True) diff --git a/test/mitmproxy/console/test_pathedit.py b/test/mitmproxy/console/test_pathedit.py new file mode 100644 index 00000000..107a48ac --- /dev/null +++ b/test/mitmproxy/console/test_pathedit.py @@ -0,0 +1,49 @@ +import os +from os.path import normpath +from mitmproxy.console import pathedit + +from .. import tutils + + +class TestPathCompleter: + + def test_lookup_construction(self): + c = pathedit._PathCompleter() + + cd = tutils.test_data.path("completion") + ca = os.path.join(cd, "a") + assert c.complete(ca).endswith(normpath("/completion/aaa")) + assert c.complete(ca).endswith(normpath("/completion/aab")) + c.reset() + ca = os.path.join(cd, "aaa") + assert c.complete(ca).endswith(normpath("/completion/aaa")) + assert c.complete(ca).endswith(normpath("/completion/aaa")) + c.reset() + assert c.complete(cd).endswith(normpath("/completion/aaa")) + + def test_completion(self): + c = pathedit._PathCompleter(True) + c.reset() + c.lookup = [ + ("a", "x/a"), + ("aa", "x/aa"), + ] + assert c.complete("a") == "a" + assert c.final == "x/a" + assert c.complete("a") == "aa" + assert c.complete("a") == "a" + + c = pathedit._PathCompleter(True) + r = c.complete("l") + assert c.final.endswith(r) + + c.reset() + assert c.complete("/nonexistent") == "/nonexistent" + assert c.final == "/nonexistent" + c.reset() + assert c.complete("~") != "~" + + c.reset() + s = "thisisatotallynonexistantpathforsure" + assert c.complete(s) == s + assert c.final == s |