aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Kriechbaumer <Kriechi@users.noreply.github.com>2017-02-20 11:48:40 +0100
committerGitHub <noreply@github.com>2017-02-20 11:48:40 +0100
commit050245e842c5a62650a365dc7484da5e9824fd1a (patch)
treea1d86812514ce3b0342589c921aa1e04b2d1dd61
parent48cfaf8c39e4810c952816523cefe2c0e94c02f4 (diff)
parentd30ef7ee3eb1bef28fc5bddba72ad6ba0cb54660 (diff)
downloadmitmproxy-050245e842c5a62650a365dc7484da5e9824fd1a.tar.gz
mitmproxy-050245e842c5a62650a365dc7484da5e9824fd1a.tar.bz2
mitmproxy-050245e842c5a62650a365dc7484da5e9824fd1a.zip
Merge pull request #2017 from lymanZerga11/patch-1
Catch ValueErrors from url.parse()
-rw-r--r--mitmproxy/tools/console/flowlist.py7
-rw-r--r--test/mitmproxy/console/test_flowlist.py21
2 files changed, 25 insertions, 3 deletions
diff --git a/mitmproxy/tools/console/flowlist.py b/mitmproxy/tools/console/flowlist.py
index 39811ce1..83ad63f3 100644
--- a/mitmproxy/tools/console/flowlist.py
+++ b/mitmproxy/tools/console/flowlist.py
@@ -338,9 +338,10 @@ class FlowListBox(urwid.ListBox):
)
def new_request(self, url, method):
- parts = mitmproxy.net.http.url.parse(str(url))
- if not parts:
- signals.status_message.send(message="Invalid Url")
+ try:
+ parts = mitmproxy.net.http.url.parse(str(url))
+ except ValueError as e:
+ signals.status_message.send(message = "Invalid URL: " + str(e))
return
scheme, host, port, path = parts
f = self.master.create_request(method, scheme, host, port, path)
diff --git a/test/mitmproxy/console/test_flowlist.py b/test/mitmproxy/console/test_flowlist.py
new file mode 100644
index 00000000..3bd92e41
--- /dev/null
+++ b/test/mitmproxy/console/test_flowlist.py
@@ -0,0 +1,21 @@
+import mitmproxy.tools.console.flowlist as flowlist
+from mitmproxy.tools import console
+from mitmproxy import proxy
+from mitmproxy import options
+from .. import tservers
+from unittest import mock
+
+
+class TestFlowlist(tservers.MasterTest):
+ def mkmaster(self, **opts):
+ if "verbosity" not in opts:
+ opts["verbosity"] = 1
+ o = options.Options(**opts)
+ return console.master.ConsoleMaster(o, proxy.DummyServer())
+
+ def test_new_request(self):
+ m = self.mkmaster()
+ x = flowlist.FlowListBox(m)
+ with mock.patch('mitmproxy.tools.console.signals.status_message.send') as mock_thing:
+ x.new_request("nonexistent url", "GET")
+ mock_thing.assert_called_once_with(message="Invalid URL: No hostname given")