From 31581b3f0c5667a0cf057152da858f304d4845c1 Mon Sep 17 00:00:00 2001 From: Asher Foa Date: Sat, 17 Mar 2018 16:07:30 -0700 Subject: [PATCH] fix prepare_pip_source_args not properly handle user & pw in repo URLs --- pipenv/utils.py | 2 +- tests/test_utils.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/pipenv/utils.py b/pipenv/utils.py index 60369f0b..7c927394 100644 --- a/pipenv/utils.py +++ b/pipenv/utils.py @@ -265,7 +265,7 @@ def prepare_pip_source_args(sources, pip_args=None): pip_args.extend( [ '--trusted-host', - urlparse(source['url']).netloc.split(':')[0], + urlparse(source['url']).hostname, ] ) return pip_args diff --git a/tests/test_utils.py b/tests/test_utils.py index 3ee424fd..5eff162f 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -358,3 +358,38 @@ twine = "*" assert not git_reformat.local_file # Test regression where VCS uris were being handled as paths rather than VCS entries assert git_reformat.vcs == 'git' + + @pytest.mark.utils + @pytest.mark.parametrize( + 'sources, expected_args', + [ + ([{'url': 'https://test.example.com/simple', 'verify_ssl': True}], + ['-i', 'https://test.example.com/simple']), + ([{'url': 'https://test.example.com/simple', 'verify_ssl': False}], + ['-i', 'https://test.example.com/simple', '--trusted-host', 'test.example.com']), + + ([{'url': "https://pypi.python.org/simple"}, + {'url': "https://custom.example.com/simple"}], + ['-i', 'https://pypi.python.org/simple', + '--extra-index-url', 'https://custom.example.com/simple']), + + ([{'url': "https://pypi.python.org/simple"}, + {'url': "https://custom.example.com/simple", 'verify_ssl': False}], + ['-i', 'https://pypi.python.org/simple', + '--extra-index-url', 'https://custom.example.com/simple', + '--trusted-host', 'custom.example.com']), + + ([{'url': "https://pypi.python.org/simple"}, + {'url': "https://user:password@custom.example.com/simple", 'verify_ssl': False}], + ['-i', 'https://pypi.python.org/simple', + '--extra-index-url', 'https://user:password@custom.example.com/simple', + '--trusted-host', 'custom.example.com']), + + ([{'url': "https://pypi.python.org/simple"}, + {'url': "https://user:password@custom.example.com/simple",}], + ['-i', 'https://pypi.python.org/simple', + '--extra-index-url', 'https://user:password@custom.example.com/simple',]), + ], + ) + def test_prepare_pip_source_args(self, sources, expected_args): + assert pipenv.utils.prepare_pip_source_args(sources, pip_args=None) == expected_args