diff --git a/poetry/repositories/legacy_repository.py b/poetry/repositories/legacy_repository.py index d14d48fe2fe..9217612b13a 100644 --- a/poetry/repositories/legacy_repository.py +++ b/poetry/repositories/legacy_repository.py @@ -393,19 +393,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 9de70520728..122f51fe23d 100644 --- a/tests/repositories/test_legacy_repository.py +++ b/tests/repositories/test_legacy_repository.py @@ -310,19 +310,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):