mirror of https://github.com/pypa/pip
Merge pull request #10033 from snook92/multi_cred_index_url
This commit is contained in:
commit
a90dd11e3f
|
@ -0,0 +1 @@
|
|||
Prefer credentials from the URL over the previously-obtained credentials from URLs of the same domain, so it is possible to use different credentials on the same index server for different ``--extra-index-url`` options.
|
|
@ -170,13 +170,12 @@ class MultiDomainBasicAuth(AuthBase):
|
|||
"""
|
||||
url, netloc, _ = split_auth_netloc_from_url(original_url)
|
||||
|
||||
# Use any stored credentials that we have for this netloc
|
||||
username, password = self.passwords.get(netloc, (None, None))
|
||||
# Try to get credentials from original url
|
||||
username, password = self._get_new_credentials(original_url)
|
||||
|
||||
# If credentials not found, use any stored credentials for this netloc
|
||||
if username is None and password is None:
|
||||
# No stored credentials. Acquire new credentials without prompting
|
||||
# the user. (e.g. from netrc, keyring, or the URL itself)
|
||||
username, password = self._get_new_credentials(original_url)
|
||||
username, password = self.passwords.get(netloc, (None, None))
|
||||
|
||||
if username is not None or password is not None:
|
||||
# Convert the username and password if they're None, so that
|
||||
|
|
|
@ -47,11 +47,29 @@ def test_get_credentials_parses_correctly(input_url, url, username, password):
|
|||
)
|
||||
|
||||
|
||||
def test_get_credentials_uses_cached_credentials():
|
||||
def test_get_credentials_not_to_uses_cached_credentials():
|
||||
auth = MultiDomainBasicAuth()
|
||||
auth.passwords['example.com'] = ('user', 'pass')
|
||||
|
||||
got = auth._get_url_and_credentials("http://foo:bar@example.com/path")
|
||||
expected = ('http://example.com/path', 'foo', 'bar')
|
||||
assert got == expected
|
||||
|
||||
|
||||
def test_get_credentials_not_to_uses_cached_credentials_only_username():
|
||||
auth = MultiDomainBasicAuth()
|
||||
auth.passwords['example.com'] = ('user', 'pass')
|
||||
|
||||
got = auth._get_url_and_credentials("http://foo@example.com/path")
|
||||
expected = ('http://example.com/path', 'foo', '')
|
||||
assert got == expected
|
||||
|
||||
|
||||
def test_get_credentials_uses_cached_credentials():
|
||||
auth = MultiDomainBasicAuth()
|
||||
auth.passwords['example.com'] = ('user', 'pass')
|
||||
|
||||
got = auth._get_url_and_credentials("http://example.com/path")
|
||||
expected = ('http://example.com/path', 'user', 'pass')
|
||||
assert got == expected
|
||||
|
||||
|
|
Loading…
Reference in New Issue