Skip to content

Commit 2263a19

Browse files
authored
ref(flags): loosen length restrictions on generic webhook secret (#94721)
See https://github.com/getsentry/sentry-docs/pull/14126/files. Providers may choose to develop their own webhooks with variable length secrets.
1 parent 2012e65 commit 2263a19

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

src/sentry/flags/endpoints/secrets.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ def validate_secret(self, value):
5454
)
5555
return serializers.CharField(min_length=32, max_length=64).run_validation(value)
5656

57+
if self.initial_data.get("provider") == "generic":
58+
return serializers.CharField(min_length=10, max_length=64).run_validation(value)
59+
5760
return serializers.CharField(min_length=32, max_length=32).run_validation(value)
5861

5962

tests/sentry/flags/endpoints/test_secrets.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ def test_post_invalid_provider(self):
110110

111111
def test_post_invalid_secret(self):
112112
with self.feature(self.features):
113-
for provider in ["launchdarkly", "generic", "unleash"]:
113+
for provider in ["launchdarkly", "unleash"]:
114114
response = self.client.post(
115115
self.url, data={"secret": "a" * 31, "provider": provider}
116116
)
@@ -127,6 +127,19 @@ def test_post_invalid_secret(self):
127127
"Ensure this field has no more than 32 characters."
128128
], provider
129129

130+
# Generic
131+
response = self.client.post(self.url, data={"secret": "a" * 9, "provider": "generic"})
132+
assert response.status_code == 400, response.content
133+
assert response.json()["secret"] == [
134+
"Ensure this field has at least 10 characters."
135+
], "generic"
136+
137+
response = self.client.post(self.url, data={"secret": "a" * 65, "provider": "generic"})
138+
assert response.status_code == 400, response.content
139+
assert response.json()["secret"] == [
140+
"Ensure this field has no more than 64 characters."
141+
], "generic"
142+
130143
# Statsig
131144
response = self.client.post(self.url, data={"secret": "a" * 32, "provider": "statsig"})
132145
assert response.status_code == 400, response.content

0 commit comments

Comments
 (0)