aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/addons/test_state.py19
-rw-r--r--test/mitmproxy/test_flow.py152
-rw-r--r--test/mitmproxy/test_server.py24
-rw-r--r--test/mitmproxy/test_web_master.py2
-rw-r--r--test/mitmproxy/tservers.py20
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)