From c36d5c35265da0eeb5f37499dbcd5076c60c174f Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 00:02:53 +0000 Subject: [PATCH] fix(allowed-domains): preserve blank origin values --- src/sentry/api/serializers/rest_framework/origin.py | 2 -- .../api/serializers/rest_framework/test_origin.py | 10 ++++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/sentry/api/serializers/rest_framework/origin.py b/src/sentry/api/serializers/rest_framework/origin.py index d38e03337661..d05992686278 100644 --- a/src/sentry/api/serializers/rest_framework/origin.py +++ b/src/sentry/api/serializers/rest_framework/origin.py @@ -9,8 +9,6 @@ class OriginField(serializers.CharField): def to_internal_value(self, data: str) -> str: rv = super().to_internal_value(data) - if not rv: - return None # type: ignore[return-value] # removed in #129428 self.validate_origin(rv) return rv diff --git a/tests/sentry/api/serializers/rest_framework/test_origin.py b/tests/sentry/api/serializers/rest_framework/test_origin.py index d41c1e54bf84..10c087cbce6f 100644 --- a/tests/sentry/api/serializers/rest_framework/test_origin.py +++ b/tests/sentry/api/serializers/rest_framework/test_origin.py @@ -14,6 +14,10 @@ class DummySerializer(serializers.Serializer[object, OriginSerializerData]): origin_field = OriginField() +class BlankOriginSerializer(serializers.Serializer): + origin_field = OriginField(allow_blank=True) + + class OriginFieldTest(TestCase): def test_valid_origin(self) -> None: urls = ["https://www.foo.com", "*", "*.domain.com", "*:80", "localhost:8080"] @@ -26,3 +30,9 @@ def test_invalid_origin(self) -> None: for url in urls: serializer = DummySerializer(data={"origin_field": url}) assert serializer.is_valid() is False + + def test_blank_origin_is_preserved(self) -> None: + serializer = BlankOriginSerializer(data={"origin_field": ""}) + + assert serializer.is_valid() + assert serializer.validated_data["origin_field"] == ""