Browse Source

fix(api): Handle no projects in tags endpoint

Jess MacQueen 6 years ago
parent
commit
86ac7e9cd2

+ 3 - 1
src/sentry/api/endpoints/organization_tags.py

@@ -2,7 +2,7 @@ from __future__ import absolute_import
 
 from rest_framework.response import Response
 
-from sentry.api.bases import OrganizationEventsEndpointBase, OrganizationEventsError
+from sentry.api.bases import OrganizationEventsEndpointBase, OrganizationEventsError, NoProjects
 from sentry.api.serializers import serialize
 from sentry.tagstore.snuba.backend import SnubaTagStorage
 
@@ -14,6 +14,8 @@ class OrganizationTagsEndpoint(OrganizationEventsEndpointBase):
             filter_params = self.get_filter_params(request, organization)
         except OrganizationEventsError as exc:
             return Response({'detail': exc.message}, status=400)
+        except NoProjects:
+            return Response([])
 
         # TODO(jess): update this when snuba tagstore is the primary backend for us
         tagstore = SnubaTagStorage()

+ 16 - 0
tests/snuba/api/endpoints/test_organization_tags.py

@@ -49,3 +49,19 @@ class OrganizationTagsTest(APITestCase, SnubaTestCase):
             {'uniqueValues': 2, 'name': 'Fruit', 'key': 'fruit', 'totalValues': 3},
             {'uniqueValues': 1, 'name': 'Some Tag', 'key': 'some_tag', 'totalValues': 1},
         ]
+
+    def test_no_projects(self):
+        user = self.create_user()
+        org = self.create_organization(owner=user)
+        self.login_as(user=user)
+
+        url = reverse(
+            'sentry-api-0-organization-tags',
+            kwargs={
+                'organization_slug': org.slug,
+            }
+        )
+
+        response = self.client.get(url, format='json')
+        assert response.status_code == 200, response.content
+        assert response.data == []