From 7d5976013abf9b998209dfc97552a988f550ea85 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Sat, 31 Oct 2026 09:51:27 -0700 Subject: [PATCH] fix(allowed-domains): preserve blank origin values A blank origin was coerced to None after field validation, so callers saw a different value than the one submitted. Keep the empty string and let downstream empty-value filtering decide what to store. --- 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 3e2899ff4c6c..ae319e90b1f4 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): rv = super().to_internal_value(data) - if not rv: - return 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 4c71031efed9..913b3ca72a8d 100644 --- a/tests/sentry/api/serializers/rest_framework/test_origin.py +++ b/tests/sentry/api/serializers/rest_framework/test_origin.py @@ -8,6 +8,10 @@ class DummySerializer(serializers.Serializer): 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"] @@ -20,3 +24,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"] == ""