Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/sentry/feedback/usecases/create_feedback.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,10 @@ def fix_for_issue_platform(event_data: dict[str, Any]) -> dict[str, Any]:
ret_event["level"] = event_data.get("level", "info")

ret_event["environment"] = event_data.get("environment", "production")
release_value = event_data.get("release")
if release_value:
ret_event["release"] = release_value

if event_data.get("sdk"):
ret_event["sdk"] = event_data["sdk"]
ret_event["request"] = event_data.get("request", {})
Expand Down Expand Up @@ -382,6 +386,9 @@ def create_feedback_issue(
else:
event_fixed["tags"]["has_linked_error"] = "false"

if event_fixed.get("release"):
event_fixed["tags"]["release"] = event_fixed["release"]

# make sure event data is valid for issue platform
validate_issue_platform_event_schema(event_fixed)

Expand Down
9 changes: 8 additions & 1 deletion src/sentry/utils/mockdata/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1275,6 +1275,9 @@ def create_mock_attachment(event_id, project):


def create_mock_user_feedback(project, has_attachment=True):
# Get an existing release for this project instead of creating a new one
release = Release.objects.filter(projects=project).first()

event = {
"project_id": project.id,
"request": {
Expand All @@ -1287,7 +1290,6 @@ def create_mock_user_feedback(project, has_attachment=True):
"timestamp": time.time(),
"received": "2024-4-27T22:23:29.574000+00:00",
"environment": next(ENVIRONMENTS),
"release": "frontend@daf1316f209d961443664cd6eb4231ca154db502",
"user": {
"ip_address": "72.164.175.154",
"email": "josh.ferge@sentry.io",
Expand All @@ -1307,6 +1309,11 @@ def create_mock_user_feedback(project, has_attachment=True):
"breadcrumbs": [],
"platform": "javascript",
}

# Only add the release field if we found an existing release
if release:
event["release"] = release.version

create_feedback_issue(event, project.id, FeedbackCreationSource.NEW_FEEDBACK_ENVELOPE)

if has_attachment:
Expand Down
14 changes: 14 additions & 0 deletions tests/sentry/feedback/usecases/test_create_feedback.py
Original file line number Diff line number Diff line change
Expand Up @@ -802,6 +802,9 @@ def test_create_feedback_tags(default_project, mock_produce_occurrence_to_kafka)
assert tags["associated_event_id"] == event_id
assert tags["has_linked_error"] == "true"

# Adds release to tags
assert tags["release"] == "frontend@daf1316f209d961443664cd6eb4231ca154db502"


@django_db_all
def test_create_feedback_tags_no_associated_event_id(
Expand Down Expand Up @@ -949,3 +952,14 @@ def test_denylist(set_sentry_option, default_project):
def test_denylist_not_in_list(set_sentry_option, default_project):
with set_sentry_option("feedback.organizations.slug-denylist", ["not-in-list"]):
assert is_in_feedback_denylist(default_project.organization) is False


@django_db_all
def test_create_feedback_release(default_project, mock_produce_occurrence_to_kafka):
event = mock_feedback_event(default_project.id)
create_feedback_issue(event, default_project.id, FeedbackCreationSource.NEW_FEEDBACK_ENVELOPE)

assert mock_produce_occurrence_to_kafka.call_count == 1
produced_event = mock_produce_occurrence_to_kafka.call_args.kwargs["event_data"]
assert produced_event.get("release") is not None
assert produced_event.get("release") == "frontend@daf1316f209d961443664cd6eb4231ca154db502"
Loading