aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy/test/test_console.py
diff options
context:
space:
mode:
Diffstat (limited to 'mitmproxy/test/test_console.py')
-rw-r--r--mitmproxy/test/test_console.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/mitmproxy/test/test_console.py b/mitmproxy/test/test_console.py
new file mode 100644
index 00000000..e64ed44a
--- /dev/null
+++ b/mitmproxy/test/test_console.py
@@ -0,0 +1,110 @@
+import gc
+
+import netlib.tutils
+from libmproxy import console
+from libmproxy.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)