diff options
Diffstat (limited to 'test/mitmproxy/tools/console/test_pathedit.py')
-rw-r--r-- | test/mitmproxy/tools/console/test_pathedit.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/test/mitmproxy/tools/console/test_pathedit.py b/test/mitmproxy/tools/console/test_pathedit.py new file mode 100644 index 00000000..bd064e5f --- /dev/null +++ b/test/mitmproxy/tools/console/test_pathedit.py @@ -0,0 +1,72 @@ +import os +from os.path import normpath +from mitmproxy.tools.console import pathedit +from mitmproxy.test import tutils + +from unittest.mock import patch + + +class TestPathCompleter: + + def test_lookup_construction(self): + c = pathedit._PathCompleter() + + cd = os.path.normpath(tutils.test_data.path("mitmproxy/completion")) + ca = os.path.join(cd, "a") + assert c.complete(ca).endswith(normpath("/completion/aaa")) + assert c.complete(ca).endswith(normpath("/completion/aab")) + c.reset() + ca = os.path.join(cd, "aaa") + assert c.complete(ca).endswith(normpath("/completion/aaa")) + assert c.complete(ca).endswith(normpath("/completion/aaa")) + c.reset() + assert c.complete(cd).endswith(normpath("/completion/aaa")) + + def test_completion(self): + c = pathedit._PathCompleter(True) + c.reset() + c.lookup = [ + ("a", "x/a"), + ("aa", "x/aa"), + ] + assert c.complete("a") == "a" + assert c.final == "x/a" + assert c.complete("a") == "aa" + assert c.complete("a") == "a" + + c = pathedit._PathCompleter(True) + r = c.complete("l") + assert c.final.endswith(r) + + c.reset() + assert c.complete("/nonexistent") == "/nonexistent" + assert c.final == "/nonexistent" + c.reset() + assert c.complete("~") != "~" + + c.reset() + s = "thisisatotallynonexistantpathforsure" + assert c.complete(s) == s + assert c.final == s + + +class TestPathEdit: + + def test_keypress(self): + + pe = pathedit.PathEdit("", "") + + with patch('urwid.widget.Edit.get_edit_text') as get_text, \ + patch('urwid.widget.Edit.set_edit_text') as set_text: + + cd = os.path.normpath(tutils.test_data.path("mitmproxy/completion")) + get_text.return_value = os.path.join(cd, "a") + + # Pressing tab should set completed path + pe.keypress((1,), "tab") + set_text_called_with = set_text.call_args[0][0] + assert set_text_called_with.endswith(normpath("/completion/aaa")) + + # Pressing any other key should reset + pe.keypress((1,), "a") + assert pe.lookup is None |