aboutsummaryrefslogtreecommitdiffstats
path: root/test/mitmproxy/console
diff options
context:
space:
mode:
Diffstat (limited to 'test/mitmproxy/console')
-rw-r--r--test/mitmproxy/console/__init__.py0
-rw-r--r--test/mitmproxy/console/test_common.py10
-rw-r--r--test/mitmproxy/console/test_console.py110
-rw-r--r--test/mitmproxy/console/test_help.py16
-rw-r--r--test/mitmproxy/console/test_palettes.py12
-rw-r--r--test/mitmproxy/console/test_pathedit.py49
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