diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/mitmproxy/addons/test_state.py | 19 | ||||
-rw-r--r-- | test/mitmproxy/test_flow.py | 152 | ||||
-rw-r--r-- | test/mitmproxy/test_server.py | 24 | ||||
-rw-r--r-- | test/mitmproxy/test_web_master.py | 2 | ||||
-rw-r--r-- | test/mitmproxy/tservers.py | 20 |
5 files changed, 35 insertions, 182 deletions
diff --git a/test/mitmproxy/addons/test_state.py b/test/mitmproxy/addons/test_state.py deleted file mode 100644 index 16e79e0d..00000000 --- a/test/mitmproxy/addons/test_state.py +++ /dev/null @@ -1,19 +0,0 @@ -from mitmproxy.test import tflow -from mitmproxy import proxy -from mitmproxy import master -from mitmproxy.addons import state - - -class TestState: - def test_duplicate_flow(self): - s = state.State() - fm = master.Master(None, proxy.DummyServer()) - fm.addons.add(s) - f = tflow.tflow(resp=True) - fm.load_flow(f) - assert s.flow_count() == 1 - - f2 = s.duplicate_flow(f) - assert f2.response - assert s.flow_count() == 2 - assert s.index(f2) == 1 diff --git a/test/mitmproxy/test_flow.py b/test/mitmproxy/test_flow.py index 7a9d0901..295e2bea 100644 --- a/test/mitmproxy/test_flow.py +++ b/test/mitmproxy/test_flow.py @@ -6,7 +6,6 @@ import mitmproxy.test.tutils from mitmproxy.net.http import Headers import mitmproxy.io from mitmproxy import flowfilter, options -from mitmproxy.addons import state from mitmproxy.contrib import tnetstring from mitmproxy.exceptions import FlowReadException, Kill from mitmproxy import flow @@ -15,7 +14,7 @@ from mitmproxy import connections from mitmproxy.proxy import ProxyConfig from mitmproxy.proxy.server import DummyServer from mitmproxy import master -from . import tutils +from . import tutils, tservers class TestHTTPFlow: @@ -107,20 +106,6 @@ class TestHTTPFlow: assert not f.killable assert f.reply.value == Kill - def test_killall(self): - srv = DummyServer(None) - s = state.State() - fm = master.Master(None, srv) - fm.addons.add(s) - - f = tflow.tflow() - f.reply.handle() - f.intercept(fm) - - s.killall(fm) - for i in s.view: - assert "killed" in str(i.error) - def test_resume(self): f = tflow.tflow() f.reply.handle() @@ -186,135 +171,6 @@ class TestTCPFlow: tutils.raises(ValueError, flowfilter.match, "~", f) -class TestState: - - def test_backup(self): - c = state.State() - f = tflow.tflow() - c.add_flow(f) - f.backup() - c.revert(f) - - def test_flow(self): - """ - normal flow: - - connect -> request -> response - """ - c = state.State() - f = tflow.tflow() - c.add_flow(f) - assert f - assert c.flow_count() == 1 - assert c.active_flow_count() == 1 - - newf = tflow.tflow() - assert c.add_flow(newf) - assert c.active_flow_count() == 2 - - f.response = http.HTTPResponse.wrap(mitmproxy.test.tutils.tresp()) - assert c.update_flow(f) - assert c.flow_count() == 2 - assert c.active_flow_count() == 1 - - assert not c.update_flow(None) - assert c.active_flow_count() == 1 - - newf.response = http.HTTPResponse.wrap(mitmproxy.test.tutils.tresp()) - assert c.update_flow(newf) - assert c.active_flow_count() == 0 - - def test_err(self): - c = state.State() - f = tflow.tflow() - c.add_flow(f) - f.error = flow.Error("message") - assert c.update_flow(f) - - c = state.State() - f = tflow.tflow() - c.add_flow(f) - c.set_view_filter("~e") - assert not c.view - f.error = tflow.terr() - assert c.update_flow(f) - assert c.view - - def test_set_view_filter(self): - c = state.State() - - f = tflow.tflow() - assert len(c.view) == 0 - - c.add_flow(f) - assert len(c.view) == 1 - - c.set_view_filter("~s") - assert c.filter_txt == "~s" - assert len(c.view) == 0 - f.response = http.HTTPResponse.wrap(mitmproxy.test.tutils.tresp()) - c.update_flow(f) - assert len(c.view) == 1 - c.set_view_filter(None) - assert len(c.view) == 1 - - f = tflow.tflow() - c.add_flow(f) - assert len(c.view) == 2 - c.set_view_filter("~q") - assert len(c.view) == 1 - c.set_view_filter("~s") - assert len(c.view) == 1 - - assert "Invalid" in c.set_view_filter("~") - - def _add_request(self, state): - f = tflow.tflow() - state.add_flow(f) - return f - - def _add_response(self, state): - f = tflow.tflow() - state.add_flow(f) - f.response = http.HTTPResponse.wrap(mitmproxy.test.tutils.tresp()) - state.update_flow(f) - - def _add_error(self, state): - f = tflow.tflow(err=True) - state.add_flow(f) - - def test_clear(self): - c = state.State() - f = self._add_request(c) - f.intercepted = True - - c.clear() - assert c.flow_count() == 0 - - def test_dump_flows(self): - c = state.State() - self._add_request(c) - self._add_response(c) - self._add_request(c) - self._add_response(c) - self._add_request(c) - self._add_response(c) - self._add_error(c) - - flows = c.view[:] - c.clear() - - c.load_flows(flows) - assert isinstance(c.flows[0], flow.Flow) - - def test_accept_all(self): - c = state.State() - self._add_request(c) - self._add_response(c) - self._add_request(c) - c.accept_all(mock.Mock()) - - class TestSerialize: def _treader(self): @@ -354,7 +210,7 @@ class TestSerialize: def test_load_flows(self): r = self._treader() - s = state.State() + s = tservers.TestState() fm = master.Master(None, DummyServer()) fm.addons.add(s) fm.load_flows(r) @@ -362,7 +218,7 @@ class TestSerialize: def test_load_flows_reverse(self): r = self._treader() - s = state.State() + s = tservers.TestState() opts = options.Options( mode="reverse", upstream_server="https://use-this-domain" @@ -431,7 +287,7 @@ class TestFlowMaster: assert fm.create_request("GET", "http", "example.com", 80, "/") def test_all(self): - s = state.State() + s = tservers.TestState() fm = master.Master(None, DummyServer()) fm.addons.add(s) f = tflow.tflow(req=None) diff --git a/test/mitmproxy/test_server.py b/test/mitmproxy/test_server.py index 7dd738f4..74cb5ae8 100644 --- a/test/mitmproxy/test_server.py +++ b/test/mitmproxy/test_server.py @@ -50,10 +50,10 @@ class CommonMixin: def test_replay(self): assert self.pathod("304").status_code == 304 if isinstance(self, tservers.HTTPUpstreamProxyTest) and self.ssl: - assert len(self.master.state.view) == 2 + assert len(self.master.state.flows) == 2 else: - assert len(self.master.state.view) == 1 - l = self.master.state.view[-1] + assert len(self.master.state.flows) == 1 + l = self.master.state.flows[-1] assert l.response.status_code == 304 l.request.path = "/p/305" self.wait_until_not_live(l) @@ -87,7 +87,7 @@ class CommonMixin: # In Upstream mode with SSL, we may already have a previous CONNECT # request. - l = self.master.state.view[-1] + l = self.master.state.flows[-1] assert l.client_conn.address assert "host" in l.request.headers assert l.response.status_code == 304 @@ -589,7 +589,7 @@ class TestProxy(tservers.HTTPProxyTest): f = self.pathod("304") assert f.status_code == 304 - f = self.master.state.view[0] + f = self.master.state.flows[0] assert f.client_conn.address assert "host" in f.request.headers assert f.response.status_code == 304 @@ -601,7 +601,7 @@ class TestProxy(tservers.HTTPProxyTest): f = self.pathod("304:b@1k:p50,1") assert f.status_code == 304 - response = self.master.state.view[0].response + response = self.master.state.flows[0].response # timestamp_start might fire a bit late, so we play safe and only require 300ms. assert 0.3 <= response.timestamp_end - response.timestamp_start @@ -620,8 +620,8 @@ class TestProxy(tservers.HTTPProxyTest): connection.recv(50000) connection.close() - request, response = self.master.state.view[ - 0].request, self.master.state.view[0].response + request, response = self.master.state.flows[ + 0].request, self.master.state.flows[0].response assert response.status_code == 304 # sanity test for our low level request # timestamp_start might fire a bit late, so we play safe and only require 300ms. assert 0.3 <= request.timestamp_end - request.timestamp_start @@ -647,8 +647,8 @@ class TestProxy(tservers.HTTPProxyTest): recvd += len(connection.recv(5000)) connection.close() - first_flow = self.master.state.view[0] - second_flow = self.master.state.view[1] + first_flow = self.master.state.flows[0] + second_flow = self.master.state.flows[1] assert first_flow.server_conn.timestamp_tcp_setup assert first_flow.server_conn.timestamp_ssl_setup is None assert second_flow.server_conn.timestamp_tcp_setup @@ -657,7 +657,7 @@ class TestProxy(tservers.HTTPProxyTest): def test_request_ip(self): f = self.pathod("200:b@100") assert f.status_code == 200 - f = self.master.state.view[0] + f = self.master.state.flows[0] assert f.server_conn.address == ("127.0.0.1", self.server.port) @@ -668,7 +668,7 @@ class TestProxySSL(tservers.HTTPProxyTest): # tests that the ssl timestamp is present when ssl is used f = self.pathod("304:b@10k") assert f.status_code == 304 - first_flow = self.master.state.view[0] + first_flow = self.master.state.flows[0] assert first_flow.server_conn.timestamp_ssl_setup diff --git a/test/mitmproxy/test_web_master.py b/test/mitmproxy/test_web_master.py index 77280644..298b14eb 100644 --- a/test/mitmproxy/test_web_master.py +++ b/test/mitmproxy/test_web_master.py @@ -12,4 +12,4 @@ class TestWebMaster(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 diff --git a/test/mitmproxy/tservers.py b/test/mitmproxy/tservers.py index e07102e1..f9dfde30 100644 --- a/test/mitmproxy/tservers.py +++ b/test/mitmproxy/tservers.py @@ -7,7 +7,6 @@ import sys from mitmproxy.proxy.config import ProxyConfig from mitmproxy.proxy.server import ProxyServer from mitmproxy import master -from mitmproxy.addons import state import pathod.test import pathod.pathoc from mitmproxy import controller @@ -15,6 +14,23 @@ from mitmproxy import options from mitmproxy import exceptions +class TestState: + def __init__(self): + self.flows = [] + + def request(self, f): + if f not in self.flows: + self.flows.append(f) + + def response(self, f): + if f not in self.flows: + self.flows.append(f) + + # FIXME: compat with old state - remove in favor of len(state.flows) + def flow_count(self): + return len(self.flows) + + class TestMaster(master.Master): def __init__(self, opts, config): @@ -23,7 +39,7 @@ class TestMaster(master.Master): def clear_addons(self, addons): self.addons.clear() - self.state = state.State() + self.state = TestState() self.addons.add(self.state) self.addons.add(*addons) |