From 32583e54144df2c4438425489aa8da4363e93b6a Mon Sep 17 00:00:00 2001 From: Mark Story Date: Tue, 16 Jul 2019 09:39:44 -0400 Subject: [PATCH 1/2] fix(github) Fix 404s not being handled in repository search Fixes SENTRY-95M --- src/sentry/integrations/github/search.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sentry/integrations/github/search.py b/src/sentry/integrations/github/search.py index 24cadc5cd2e251..1666507191a163 100644 --- a/src/sentry/integrations/github/search.py +++ b/src/sentry/integrations/github/search.py @@ -52,6 +52,10 @@ def get(self, request, organization, integration_id): except ApiError as err: if err.code == 403: return Response({'detail': 'Rate limit exceeded'}, status=429) + if err.code == 404: + return Response({ + 'detail': 'Repositories could not be searched because they do not exist, or you do not have access to them.' + }, status=404) raise return Response([{ 'label': i['name'], From 9da63344c3aca9a123d5e3554ec4b97c8e251d62 Mon Sep 17 00:00:00 2001 From: Mark Story Date: Tue, 16 Jul 2019 11:42:09 -0400 Subject: [PATCH 2/2] Add test and fix error code. GitHub was sending 422 not 404. --- src/sentry/integrations/github/search.py | 2 +- .../sentry/integrations/github/test_search.py | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/sentry/integrations/github/search.py b/src/sentry/integrations/github/search.py index 1666507191a163..5b3f31c7de0df9 100644 --- a/src/sentry/integrations/github/search.py +++ b/src/sentry/integrations/github/search.py @@ -52,7 +52,7 @@ def get(self, request, organization, integration_id): except ApiError as err: if err.code == 403: return Response({'detail': 'Rate limit exceeded'}, status=429) - if err.code == 404: + if err.code == 422: return Response({ 'detail': 'Repositories could not be searched because they do not exist, or you do not have access to them.' }, status=404) diff --git a/tests/sentry/integrations/github/test_search.py b/tests/sentry/integrations/github/test_search.py index 3df8097c144a34..9f70319a10aecd 100644 --- a/tests/sentry/integrations/github/test_search.py +++ b/tests/sentry/integrations/github/test_search.py @@ -143,6 +143,30 @@ def test_finds_repo_results(self): {'value': 'test/exhaust', 'label': 'exhaust'} ] + @responses.activate + def test_repo_search_validation_error(self): + responses.add( + responses.GET, + self.base_url + '/search/repositories?q=org:test%20nope', + json={ + 'message': 'Validation Error', + 'errors': [ + {'message': 'Cannot search for that org'} + ] + }, + status=422 + ) + resp = self.client.get( + self.url, + data={ + 'field': 'repo', + 'query': 'nope', + 'repo': 'example', + } + ) + assert resp.status_code == 404 + assert 'detail' in resp.data + @responses.activate def test_finds_no_external_issues_results(self): responses.add(