Merge pull request #2017 from lymanZerga11/patch-1

Catch ValueErrors from url.parse()
This commit is contained in:
Thomas Kriechbaumer 2017-02-20 11:48:40 +01:00 committed by GitHub
commit 050245e842
2 changed files with 25 additions and 3 deletions

View File

@ -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)

View File

@ -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")