Browse Source

fix(discover): Handle long discover query names (#35892)

- This adds max_length to the discover saved query serializer to prevent
  us erroring on invalid discover query names
- fixes SENTRY-VBS
William Mak 2 years ago
parent
commit
2269823c16

+ 1 - 1
src/sentry/discover/endpoints/serializers.py

@@ -139,7 +139,7 @@ class DiscoverQuerySerializer(serializers.Serializer):
 
 
 class DiscoverSavedQuerySerializer(serializers.Serializer):
-    name = serializers.CharField(required=True)
+    name = serializers.CharField(required=True, max_length=255)
     projects = ListField(child=serializers.IntegerField(), required=False, default=[])
     start = serializers.DateTimeField(required=False, allow_null=True)
     end = serializers.DateTimeField(required=False, allow_null=True)

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

@@ -652,3 +652,19 @@ class DiscoverSavedQueriesVersion2Test(DiscoverSavedQueryBase):
             )
         assert response.status_code == 400, response.content
         assert not DiscoverSavedQuery.objects.filter(name="Bad query").exists()
+
+    def test_save_query_long_name(self):
+        with self.feature(self.feature_name):
+            response = self.client.post(
+                self.url,
+                {
+                    "name": "Bad query" * 200,
+                    "projects": [-1],
+                    "fields": ["title", "count()"],
+                    "range": "24h",
+                    "query": "spaceAfterColon:1",
+                    "version": 2,
+                },
+            )
+        assert response.status_code == 400, response.content
+        assert not DiscoverSavedQuery.objects.filter(name="Bad query" * 200).exists()