Correctly handle pagure project response
If pagure returns 404 when looking for the project it means that project didn't exist. When this happens just return None instead of raising error. Signed-off-by: Michal Konečný <mkonecny@redhat.com>
This commit is contained in:
parent
4a9894c86a
commit
16ab7a52ff
2 changed files with 30 additions and 5 deletions
|
@ -1107,7 +1107,7 @@ class TestPagureGetProject:
|
|||
Assert that getting project_info works correctly.
|
||||
"""
|
||||
response_mock = Mock()
|
||||
response_mock.status_code = 200
|
||||
response_mock.ok = True
|
||||
|
||||
project_name = "zlopez"
|
||||
data = {"name": project_name}
|
||||
|
@ -1128,14 +1128,37 @@ class TestPagureGetProject:
|
|||
|
||||
assert result == data
|
||||
|
||||
def test_get_project_doesnt_exist(self):
|
||||
"""
|
||||
Assert that getting project_info doesn't return anything if the project doesn't exist.
|
||||
"""
|
||||
response_mock = Mock()
|
||||
response_mock.ok = False
|
||||
response_mock.status_code = 404
|
||||
|
||||
self.pagure._requests_session.get.return_value = response_mock
|
||||
|
||||
namespace = "namespace"
|
||||
repo = "repo"
|
||||
|
||||
result = self.pagure.get_project(namespace, repo)
|
||||
|
||||
self.pagure._requests_session.get.assert_called_with(
|
||||
"https://pagure.io/api/0/{0}/{1}".format(namespace, repo),
|
||||
headers=self.pagure.get_auth_header(),
|
||||
)
|
||||
|
||||
assert result is None
|
||||
|
||||
def test_get_project_failure(self):
|
||||
"""
|
||||
Assert that failing to get project data is handled correctly.
|
||||
"""
|
||||
response_mock = Mock()
|
||||
response_mock.ok = False
|
||||
response_mock.status_code = 500
|
||||
|
||||
self.pagure._requests_session.get.side_effect = response_mock
|
||||
self.pagure._requests_session.get.return_value = response_mock
|
||||
|
||||
namespace = "namespace"
|
||||
repo = "repo"
|
||||
|
|
|
@ -555,13 +555,15 @@ class Pagure:
|
|||
log.debug("Getting project '{0}/{1}'".format(namespace, repo))
|
||||
response = self._requests_session.get(contributors_api_url, headers=headers)
|
||||
|
||||
if response.status_code != 200:
|
||||
if response.ok:
|
||||
result = response.json()
|
||||
elif response.status_code == 404:
|
||||
result = None
|
||||
else:
|
||||
log.error(
|
||||
"Error when retrieving project '{0}/{1}'. "
|
||||
"Got status_code '{2}'.".format(namespace, repo, response.status_code)
|
||||
)
|
||||
raise PagureError("Couldn't get project '{0}/{1}'".format(namespace, repo))
|
||||
|
||||
result = response.json()
|
||||
|
||||
return result
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue