diff options
Diffstat (limited to 'mitmproxy/test/test_console.py')
-rw-r--r-- | mitmproxy/test/test_console.py | 110 |
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) |