Skip to content

Commit 2f9b9e4

Browse files
dcramercodex
andcommitted
test(api): Fix write-scope regression tests
Use supported token auth for data export, give alert-rule token tests a valid member project setup, and return a real anomaly payload in the Seer regression test. These tests were asserting the new permission contracts, but two of them were exercising invalid success paths and one was using an auth shape that the endpoint does not serialize correctly. Co-Authored-By: Codex <noreply@openai.com>
1 parent 1e12340 commit 2f9b9e4

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

tests/sentry/data_export/endpoints/test_data_export.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,12 @@
66

77
from sentry.data_export.base import ExportQueryType, ExportStatus
88
from sentry.data_export.models import ExportedData
9+
from sentry.models.apitoken import ApiToken
910
from sentry.search.utils import parse_datetime_string
11+
from sentry.silo.base import SiloMode
1012
from sentry.testutils.cases import APITestCase
1113
from sentry.testutils.helpers.datetime import freeze_time
14+
from sentry.testutils.silo import assume_test_silo_mode
1215
from sentry.utils.snuba import MAX_FIELDS
1316

1417

@@ -58,6 +61,10 @@ def make_payload(
5861
payload["query_info"].update(extras)
5962
return payload
6063

64+
def _create_token(self, scope: str) -> ApiToken:
65+
with assume_test_silo_mode(SiloMode.CONTROL):
66+
return ApiToken.objects.create(user=self.user, scope_list=[scope])
67+
6168
def test_authorization(self) -> None:
6269
payload = self.make_payload("issue")
6370

@@ -80,30 +87,30 @@ def test_authorization(self) -> None:
8087
with self.feature("organizations:discover-query"):
8188
self.get_error_response(self.org.slug, status_code=403, **modified_payload)
8289

83-
def test_post_requires_event_write_scope_for_api_keys(self) -> None:
90+
def test_post_requires_event_write_scope_for_tokens(self) -> None:
8491
payload = self.make_payload("issue")
85-
api_key = self.create_api_key(organization=self.org, scope_list=["event:read"])
92+
token = self._create_token("event:read")
8693

8794
with self.feature("organizations:discover-query"):
8895
response = self.client.post(
8996
self.url,
9097
data=payload,
9198
format="json",
92-
HTTP_AUTHORIZATION=self.create_basic_auth_header(api_key.key),
99+
HTTP_AUTHORIZATION=f"Bearer {token.token}",
93100
)
94101

95102
assert response.status_code == 403
96103

97-
def test_post_allows_event_write_scope_for_api_keys(self) -> None:
104+
def test_post_allows_event_write_scope_for_tokens(self) -> None:
98105
payload = self.make_payload("issue")
99-
api_key = self.create_api_key(organization=self.org, scope_list=["event:write"])
106+
token = self._create_token("event:write")
100107

101108
with self.feature("organizations:discover-query"):
102109
response = self.client.post(
103110
self.url,
104111
data=payload,
105112
format="json",
106-
HTTP_AUTHORIZATION=self.create_basic_auth_header(api_key.key),
113+
HTTP_AUTHORIZATION=f"Bearer {token.token}",
107114
)
108115

109116
assert response.status_code == 201

tests/sentry/incidents/endpoints/test_organization_alert_rule_index.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,8 @@ def test_simple(self) -> None:
455455
)
456456

457457
def test_create_requires_alerts_write_scope_for_tokens(self) -> None:
458+
team = self.create_team(organization=self.organization, members=[self.user])
459+
ProjectTeam.objects.create(project=self.project, team=team)
458460
token = self._create_token("org:read")
459461

460462
with self.feature(["organizations:incidents", "organizations:performance-view"]):
@@ -468,6 +470,8 @@ def test_create_requires_alerts_write_scope_for_tokens(self) -> None:
468470
assert response.status_code == 403
469471

470472
def test_create_allows_alerts_write_scope_for_tokens(self) -> None:
473+
team = self.create_team(organization=self.organization, members=[self.user])
474+
ProjectTeam.objects.create(project=self.project, team=team)
471475
token = self._create_token("alerts:write")
472476

473477
with (

tests/sentry/seer/endpoints/test_organization_events_anomalies.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,24 @@ def test_member_permission(self, mock_seer_request: MagicMock) -> None:
172172
)
173173
def test_alerts_write_scope_allows_post(self, mock_seer_request: MagicMock) -> None:
174174
mock_seer_request.return_value = HTTPResponse(
175-
orjson.dumps(DetectAnomaliesResponse(success=True, message="", timeseries=[])),
175+
orjson.dumps(
176+
DetectAnomaliesResponse(
177+
success=True,
178+
message="",
179+
timeseries=[
180+
TimeSeriesPoint(
181+
timestamp=self.current_timestamp_1,
182+
value=2,
183+
anomaly=Anomaly(anomaly_score=-0.1, anomaly_type="none"),
184+
),
185+
TimeSeriesPoint(
186+
timestamp=self.current_timestamp_2,
187+
value=3,
188+
anomaly=Anomaly(anomaly_score=-0.2, anomaly_type="none"),
189+
),
190+
],
191+
)
192+
),
176193
status=200,
177194
)
178195
token = self._create_token("alerts:write")

0 commit comments

Comments
 (0)