From 6b6c44551ae32ea1ed9e31f55b85a8cffe266d05 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 30 Oct 2016 15:45:36 +1300 Subject: addons.view: Add first-class support for marking Marking now works differently - it's no longer just another filter, it's applied in addition to the filter. This means you can apply a filter, mark some flows, and then toggle between marked and unmarked flows matching the filter. I'm leaving the filter for marked flows intact - it will come in handy in other situations. --- test/mitmproxy/addons/test_view.py | 8 +++ test/mitmproxy/console/test_master.py | 97 ++--------------------------------- 2 files changed, 12 insertions(+), 93 deletions(-) (limited to 'test') diff --git a/test/mitmproxy/addons/test_view.py b/test/mitmproxy/addons/test_view.py index e8d6fb07..c7a9821a 100644 --- a/test/mitmproxy/addons/test_view.py +++ b/test/mitmproxy/addons/test_view.py @@ -58,6 +58,14 @@ def test_filter(): assert len(v._store) == 4 v.set_filter(None) + assert len(v) == 4 + v[1].marked = True + v.toggle_marked() + assert len(v) == 1 + assert v[0].marked + v.toggle_marked() + assert len(v) == 4 + def test_order(): v = view.View() diff --git a/test/mitmproxy/console/test_master.py b/test/mitmproxy/console/test_master.py index fe552062..eb840187 100644 --- a/test/mitmproxy/console/test_master.py +++ b/test/mitmproxy/console/test_master.py @@ -1,5 +1,3 @@ -import gc - from mitmproxy.test import tflow import mitmproxy.test.tutils from mitmproxy.tools import console @@ -9,93 +7,6 @@ from mitmproxy.tools.console import common from .. import mastertest -class TestConsoleState: - - def test_flow(self): - """ - normal flow: - - connect -> request -> response - """ - c = console.master.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.master.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 = tflow.tflow() - return state.add_flow(f) - - def _add_response(self, state): - f = self._add_request(state) - f.response = mitmproxy.test.tutils.tresp() - state.update_flow(f) - - def test_add_response(self): - c = console.master.ConsoleState() - f = self._add_request(c) - f.response = mitmproxy.test.tutils.tresp() - c.focus = None - c.update_flow(f) - - def test_focus_view(self): - c = console.master.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_view_filter("~s") - assert len(c.view) == 3 - assert c.focus == 0 - - def test_settings(self): - c = console.master.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( [ @@ -123,17 +34,17 @@ class TestMaster(mastertest.MasterTest): m = self.mkmaster() for i in (1, 2, 3): self.dummy_cycle(m, 1, b"") - assert len(m.state.flows) == i + assert len(m.view) == i def test_intercept(self): """regression test for https://github.com/mitmproxy/mitmproxy/issues/1605""" m = self.mkmaster(intercept="~b bar") f = tflow.tflow(req=mitmproxy.test.tutils.treq(content=b"foo")) m.request(f) - assert not m.state.flows[0].intercepted + assert not m.view[0].intercepted f = tflow.tflow(req=mitmproxy.test.tutils.treq(content=b"bar")) m.request(f) - assert m.state.flows[1].intercepted + assert m.view[1].intercepted f = tflow.tflow(resp=mitmproxy.test.tutils.tresp(content=b"bar")) m.request(f) - assert m.state.flows[2].intercepted + assert m.view[2].intercepted -- cgit v1.2.3