diff --git a/poetry/repositories/legacy_repository.py b/poetry/repositories/legacy_repository.py index 63085a760c6..f0551e5adf8 100644 --- a/poetry/repositories/legacy_repository.py +++ b/poetry/repositories/legacy_repository.py @@ -423,19 +423,18 @@ def _get(self, endpoint: str) -> Optional[Page]: url = self._url + endpoint try: response = self.session.get(url) + if response.status_code in (401, 403): + self._log( + "Authorization error accessing {url}".format(url=url), + level="warning", + ) + return if response.status_code == 404: return response.raise_for_status() except requests.HTTPError as e: raise RepositoryError(e) - if response.status_code in (401, 403): - self._log( - "Authorization error accessing {url}".format(url=response.url), - level="warn", - ) - return - if response.url != url: self._log( "Response URL {response_url} differs from request URL {url}".format( diff --git a/tests/repositories/test_legacy_repository.py b/tests/repositories/test_legacy_repository.py index 5f49110d975..a1db15952e1 100644 --- a/tests/repositories/test_legacy_repository.py +++ b/tests/repositories/test_legacy_repository.py @@ -338,19 +338,18 @@ def test_get_200_returns_page(http): assert repo._get("/foo") -def test_get_404_returns_none(http): - repo = MockHttpRepository({"/foo": 404}, http) +@pytest.mark.parametrize("status_code", [401, 403, 404]) +def test_get_40x_and_returns_none(http, status_code): + repo = MockHttpRepository({"/foo": status_code}, http) assert repo._get("/foo") is None -def test_get_4xx_and_5xx_raises(http): - endpoints = {"/{}".format(code): code for code in {401, 403, 500}} - repo = MockHttpRepository(endpoints, http) +def test_get_5xx_raises(http): + repo = MockHttpRepository({"/foo": 500}, http) - for endpoint in endpoints: - with pytest.raises(RepositoryError): - repo._get(endpoint) + with pytest.raises(RepositoryError): + repo._get("/foo") def test_get_redirected_response_url(http, monkeypatch):