diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-11-04 08:55:01 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-11-04 08:55:01 +1300 |
commit | b51a96081ac4440a8f3bf16884a0561043ef1611 (patch) | |
tree | e1e3c48f3faa20bd06ed4ca3a7a090784ed2aec6 /test | |
parent | 19e6af857d0388885a31071b1e8dcb5e68e1a264 (diff) | |
download | mitmproxy-b51a96081ac4440a8f3bf16884a0561043ef1611.tar.gz mitmproxy-b51a96081ac4440a8f3bf16884a0561043ef1611.tar.bz2 mitmproxy-b51a96081ac4440a8f3bf16884a0561043ef1611.zip |
addons.view: test suite to 100%
This takes coverage for all of /addons to 100%
Diffstat (limited to 'test')
-rw-r--r-- | test/mitmproxy/addons/test_view.py | 70 |
1 files changed, 55 insertions, 15 deletions
diff --git a/test/mitmproxy/addons/test_view.py b/test/mitmproxy/addons/test_view.py index 5243e9d4..37a8d866 100644 --- a/test/mitmproxy/addons/test_view.py +++ b/test/mitmproxy/addons/test_view.py @@ -7,6 +7,13 @@ from mitmproxy import options from mitmproxy.test import taddons +def tft(*, method="get", start=0): + f = tflow.tflow() + f.request.method = method + f.request.timestamp_start = start + return f + + class Options(options.Options): def __init__( self, @@ -62,18 +69,24 @@ def test_order_generators(): def test_simple(): v = view.View() - f = tflow.tflow() + f = tft(start=1) assert v.store_count() == 0 - f.request.timestamp_start = 1 v.request(f) assert list(v) == [f] + + # These all just call udpate + v.error(f) + v.response(f) + v.intercept(f) + v.resume(f) + assert list(v) == [f] + v.request(f) assert list(v) == [f] assert len(v._store) == 1 assert v.store_count() == 1 - f2 = tflow.tflow() - f2.request.timestamp_start = 3 + f2 = tft(start=3) v.request(f2) assert list(v) == [f, f2] v.request(f2) @@ -84,8 +97,7 @@ def test_simple(): assert not v.inbounds(-1) assert not v.inbounds(100) - f3 = tflow.tflow() - f3.request.timestamp_start = 2 + f3 = tft(start=2) v.request(f3) assert list(v) == [f, f3, f2] v.request(f3) @@ -97,13 +109,6 @@ def test_simple(): assert len(v._store) == 0 -def tft(*, method="get", start=0): - f = tflow.tflow() - f.request.method = method - f.request.timestamp_start = start - return f - - def test_filter(): v = view.View() f = flowfilter.parse("~m get") @@ -160,8 +165,8 @@ def test_reversed(): tutils.raises(IndexError, v.__getitem__, 5) tutils.raises(IndexError, v.__getitem__, -5) - assert v.bisect(v[0]) == 1 - assert v.bisect(v[2]) == 3 + assert v._bisect(v[0]) == 1 + assert v._bisect(v[2]) == 3 def test_update(): @@ -255,6 +260,33 @@ def test_signals(): assert not any([rec_add, rec_update, rec_remove, rec_refresh]) +def test_focus_follow(): + v = view.View() + with taddons.context(options=Options()) as tctx: + tctx.configure(v, focus_follow=True, filter="~m get") + + v.add(tft(start=5)) + assert v.focus.index == 0 + + v.add(tft(start=4)) + assert v.focus.index == 0 + assert v.focus.flow.request.timestamp_start == 4 + + v.add(tft(start=7)) + assert v.focus.index == 2 + assert v.focus.flow.request.timestamp_start == 7 + + mod = tft(method="put", start=6) + v.add(mod) + assert v.focus.index == 2 + assert v.focus.flow.request.timestamp_start == 7 + + mod.request.method = "GET" + v.update(mod) + assert v.focus.index == 2 + assert v.focus.flow.request.timestamp_start == 6 + + def test_focus(): # Special case - initialising with a view that already contains data v = view.View() @@ -273,6 +305,10 @@ def test_focus(): assert f.index == 0 assert f.flow is v[0] + # Try to set to something not in view + tutils.raises(ValueError, f.__setattr__, "flow", tft()) + tutils.raises(ValueError, f.__setattr__, "index", 99) + v.add(tft(start=0)) assert f.index == 1 assert f.flow is v[1] @@ -281,6 +317,10 @@ def test_focus(): assert f.index == 1 assert f.flow is v[1] + f.index = 0 + assert f.index == 0 + f.index = 1 + v.remove(v[1]) assert f.index == 1 assert f.flow is v[1] |