From a4e60d4bb10f49ec212ec89e9a632dc42e4fd477 Mon Sep 17 00:00:00 2001 From: "James E. King III" Date: Sat, 22 Dec 2018 17:21:25 +0000 Subject: [PATCH] properly handle tunnel connect uri generation broken in #389 --- tests/unit/test_request.py | 25 ++++++++++++++++--------- vcr/request.py | 5 ++++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/tests/unit/test_request.py b/tests/unit/test_request.py index dfd68d7..00793f8 100644 --- a/tests/unit/test_request.py +++ b/tests/unit/test_request.py @@ -3,9 +3,13 @@ from vcr.request import Request, HeadersDict -def test_str(): - req = Request('GET', 'http://www.google.com/', '', {}) - str(req) == '' +@pytest.mark.parametrize("method, uri, expected_str", [ + ('GET', 'http://www.google.com/', ''), + ('OPTIONS', '*', ''), + ('CONNECT', 'host.some.where:1234', '') +]) +def test_str(method, uri, expected_str): + assert str(Request(method, uri, '', {})) == expected_str def test_headers(): @@ -29,18 +33,21 @@ def test_add_header_deprecated(): ('https://go.com/', 443), ('https://go.com:443/', 443), ('https://go.com:3000/', 3000), + ('*', None) ]) def test_port(uri, expected_port): req = Request('GET', uri, '', {}) assert req.port == expected_port -def test_uri(): - req = Request('GET', 'http://go.com/', '', {}) - assert req.uri == 'http://go.com/' - - req = Request('GET', 'http://go.com:80/', '', {}) - assert req.uri == 'http://go.com:80/' +@pytest.mark.parametrize("method, uri", [ + ('GET', 'http://go.com/'), + ('GET', 'http://go.com:80/'), + ('CONNECT', 'localhost:1234'), + ('OPTIONS', '*') +]) +def test_uri(method, uri): + assert Request(method, uri, '', {}).uri == uri def test_HeadersDict(): diff --git a/vcr/request.py b/vcr/request.py index e268053..dfd6d46 100644 --- a/vcr/request.py +++ b/vcr/request.py @@ -58,7 +58,10 @@ def port(self): parse_uri = urlparse(self.uri) port = parse_uri.port if port is None: - port = {'https': 443, 'http': 80}[parse_uri.scheme] + try: + port = {'https': 443, 'http': 80}[parse_uri.scheme] + except KeyError: + pass return port @property