Skip to content

Commit 0f4f299

Browse files
committed
write test and remove associated event ID from contexts if invalid
1 parent 84d9f56 commit 0f4f299

File tree

2 files changed

+62
-8
lines changed

2 files changed

+62
-8
lines changed

src/sentry/feedback/usecases/create_feedback.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,16 @@ def create_feedback_issue(
341341
sample_rate=1.0,
342342
)
343343

344+
# Removes associated_event_id from event if it is invalid
345+
associated_event_id = get_path(event, "contexts", "feedback", "associated_event_id")
346+
347+
if associated_event_id:
348+
try:
349+
UUID(str(associated_event_id))
350+
except ValueError:
351+
associated_event_id = None
352+
event["contexts"]["feedback"]["associated_event_id"] = None
353+
344354
# Note that some of the fields below like title and subtitle
345355
# are not used by the feedback UI, but are required.
346356
event["event_id"] = event.get("event_id") or uuid4().hex
@@ -380,14 +390,6 @@ def create_feedback_issue(
380390
if user_email and "user.email" not in event_fixed["tags"]:
381391
event_fixed["tags"]["user.email"] = user_email
382392

383-
# add the associated_event_id and has_linked_error to tags
384-
associated_event_id = get_path(event_data, "contexts", "feedback", "associated_event_id")
385-
386-
try:
387-
UUID(str(associated_event_id), version=4)
388-
except ValueError:
389-
associated_event_id = None
390-
391393
if associated_event_id:
392394
event_fixed["tags"]["associated_event_id"] = associated_event_id
393395
event_fixed["tags"]["has_linked_error"] = "true"

tests/sentry/feedback/usecases/test_create_feedback.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -788,6 +788,58 @@ def test_create_feedback_adds_associated_event_id(
788788
assert associated_event_id == "56b08cf7852c42cbb95e4a6998c66ad6"
789789

790790

791+
@django_db_all
792+
def test_create_feedback_adds_invalid_associated_event_id(
793+
default_project, mock_produce_occurrence_to_kafka
794+
):
795+
event = {
796+
"project_id": default_project.id,
797+
"request": {
798+
"url": "https://sentry.sentry.io/feedback/?statsPeriod=14d",
799+
"headers": {
800+
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
801+
},
802+
},
803+
"event_id": "56b08cf7852c42cbb95e4a6998c66ad6",
804+
"timestamp": 1698255009.574,
805+
"received": "2021-10-24T22:23:29.574000+00:00",
806+
"environment": "prod",
807+
"release": "frontend@daf1316f209d961443664cd6eb4231ca154db502",
808+
"user": {
809+
"ip_address": "72.164.175.154",
810+
"email": "josh.ferge@sentry.io",
811+
"id": 880461,
812+
"isStaff": False,
813+
"name": "Josh Ferge",
814+
},
815+
"contexts": {
816+
"feedback": {
817+
"contact_email": "josh.ferge@sentry.io",
818+
"name": "Josh Ferge",
819+
"message": "great website",
820+
"replay_id": "3d621c61593c4ff9b43f8490a78ae18e",
821+
"url": "https://sentry.sentry.io/feedback/?statsPeriod=14d",
822+
"associated_event_id": "abcdefg",
823+
},
824+
},
825+
"breadcrumbs": [],
826+
"platform": "javascript",
827+
}
828+
create_feedback_issue(event, default_project.id, FeedbackCreationSource.NEW_FEEDBACK_ENVELOPE)
829+
830+
assert mock_produce_occurrence_to_kafka.call_count == 1
831+
832+
associated_event_id_evidence = [
833+
evidence.value
834+
for evidence in mock_produce_occurrence_to_kafka.call_args.kwargs[
835+
"occurrence"
836+
].evidence_display
837+
if evidence.name == "associated_event_id"
838+
]
839+
associated_event_id = associated_event_id_evidence[0] if associated_event_id_evidence else None
840+
assert associated_event_id is None
841+
842+
791843
@django_db_all
792844
def test_create_feedback_tags(default_project, mock_produce_occurrence_to_kafka):
793845
"""We want to surface these tags in the UI. We also use user.email for alert conditions."""

0 commit comments

Comments
 (0)