Files
sentinel/tests/sentry/api/endpoints/test_project_processingissues.py
2024-02-15 17:01:50 +00:00

103 lines
4.2 KiB
Python

from datetime import datetime, timezone
from django.urls import reverse
from sentry.models.eventerror import EventError
from sentry.models.processingissue import EventProcessingIssue, ProcessingIssue
from sentry.models.rawevent import RawEvent
from sentry.testutils.cases import APITestCase
from sentry.testutils.silo import region_silo_test
@region_silo_test
class ProjectProjectProcessingIssuesTest(APITestCase):
def test_simple(self):
self.login_as(user=self.user)
team = self.create_team()
project1 = self.create_project(teams=[team], name="foo")
raw_event = RawEvent.objects.create(project_id=project1.id, event_id="abc")
issue, _ = ProcessingIssue.objects.get_or_create(
project_id=project1.id, checksum="abc", type=EventError.NATIVE_MISSING_DSYM
)
EventProcessingIssue.objects.get_or_create(raw_event=raw_event, processing_issue=issue)
url = reverse(
"sentry-api-0-project-processing-issues",
kwargs={"organization_slug": project1.organization.slug, "project_slug": project1.slug},
)
response = self.client.get(url, format="json")
assert response.status_code == 200, response.content
assert response.data["hasIssues"] is True
assert response.data["hasMoreResolveableIssues"] is False
assert response.data["numIssues"] == 1
assert response.data["issuesProcessing"] == 0
assert response.data["resolveableIssues"] == 0
def test_issues(self):
self.login_as(user=self.user)
team = self.create_team()
project1 = self.create_project(teams=[team], name="foo")
raw_event = RawEvent.objects.create(project_id=project1.id, event_id="abc")
issue, _ = ProcessingIssue.objects.get_or_create(
project_id=project1.id,
checksum="abc",
type=EventError.NATIVE_MISSING_DSYM,
datetime=datetime(2013, 8, 13, 3, 8, 25, tzinfo=timezone.utc),
)
issue2, _ = ProcessingIssue.objects.get_or_create(
project_id=project1.id,
checksum="abcd",
type=EventError.NATIVE_MISSING_DSYM,
datetime=datetime(2014, 8, 13, 3, 8, 25, tzinfo=timezone.utc),
)
EventProcessingIssue.objects.get_or_create(raw_event=raw_event, processing_issue=issue)
url = reverse(
"sentry-api-0-project-processing-issues",
kwargs={"organization_slug": project1.organization.slug, "project_slug": project1.slug},
)
response = self.client.get(url + "?detailed=1", format="json")
assert response.status_code == 200, response.content
assert len(response.data["issues"]) == 2
assert response.data["numIssues"] == 2
assert response.data["lastSeen"] == issue2.datetime
assert response.data["hasIssues"] is True
assert response.data["hasMoreResolveableIssues"] is False
assert response.data["issuesProcessing"] == 0
assert response.data["resolveableIssues"] == 0
assert response.data["issues"][0]["checksum"] == issue.checksum
assert response.data["issues"][0]["numEvents"] == 1
assert response.data["issues"][0]["type"] == EventError.NATIVE_MISSING_DSYM
assert response.data["issues"][1]["checksum"] == issue2.checksum
def test_resolvable_issues(self):
self.login_as(user=self.user)
team = self.create_team()
project1 = self.create_project(teams=[team], name="foo")
RawEvent.objects.create(project_id=project1.id, event_id="abc")
url = reverse(
"sentry-api-0-project-processing-issues",
kwargs={"organization_slug": project1.organization.slug, "project_slug": project1.slug},
)
response = self.client.get(url + "?detailed=1", format="json")
assert response.status_code == 200, response.content
assert response.data["numIssues"] == 0
assert response.data["resolveableIssues"] == 1
assert response.data["lastSeen"] is None
assert response.data["hasIssues"] is False
assert response.data["hasMoreResolveableIssues"] is False
assert response.data["numIssues"] == 0
assert response.data["issuesProcessing"] == 0