From 09eff6ff5504c8fee2b507f156aaa9b7e2c6baba Mon Sep 17 00:00:00 2001 From: Srijan Tripathi Date: Tue, 21 Jul 2026 14:55:57 +0000 Subject: [PATCH 1/3] Fix #7983: Add EDGE_IDENTITY to allowed integration audit events --- api/audit/signals.py | 1 + .../unit/audit/test_unit_audit_signals.py | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/api/audit/signals.py b/api/audit/signals.py index d77fd68448fa..d1233f071a1a 100644 --- a/api/audit/signals.py +++ b/api/audit/signals.py @@ -121,6 +121,7 @@ def track_only_feature_related_events(signal_function): # type: ignore[no-untyp RelatedObjectType.FEATURE_STATE, RelatedObjectType.SEGMENT, RelatedObjectType.EF_VERSION, + RelatedObjectType.EDGE_IDENTITY, ] return track_only(allowed_types)(signal_function) diff --git a/api/tests/unit/audit/test_unit_audit_signals.py b/api/tests/unit/audit/test_unit_audit_signals.py index 5ddf4e671396..3d505331e5aa 100644 --- a/api/tests/unit/audit/test_unit_audit_signals.py +++ b/api/tests/unit/audit/test_unit_audit_signals.py @@ -596,3 +596,33 @@ def test_send_feature_flag_went_live_signal__non_feature_state_instance__skips_s # Then mock_signal_send.assert_not_called() + +def test_send_audit_log_event_to_grafana__edge_identity__calls_expected( + mocker: MockerFixture, + project: Project, +) -> None: + # Given + audit_log_record = AuditLog.objects.create( + project=project, + related_object_type=RelatedObjectType.EDGE_IDENTITY.name, + ) + grafana_wrapper_mock = mocker.patch("audit.signals.GrafanaWrapper", autospec=True) + grafana_wrapper_instance_mock = grafana_wrapper_mock.return_value + + grafana_config = GrafanaProjectConfiguration(base_url="test.com", api_key="test") + project.grafana_config = grafana_config + + # When + send_audit_log_event_to_grafana(AuditLog, audit_log_record) + + # Then + grafana_wrapper_mock.assert_called_once_with( + base_url=grafana_config.base_url, + api_key=grafana_config.api_key, + ) + grafana_wrapper_instance_mock.generate_event_data.assert_called_once_with( + audit_log_record + ) + grafana_wrapper_instance_mock.track_event_async.assert_called_once_with( + event=grafana_wrapper_instance_mock.generate_event_data.return_value + ) \ No newline at end of file From b97fc8e04133b60ea00d7c658562432f2ac3f05d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 21 Jul 2026 14:57:40 +0000 Subject: [PATCH 2/3] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- api/tests/unit/audit/test_unit_audit_signals.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/api/tests/unit/audit/test_unit_audit_signals.py b/api/tests/unit/audit/test_unit_audit_signals.py index 3d505331e5aa..ec4164f69a6b 100644 --- a/api/tests/unit/audit/test_unit_audit_signals.py +++ b/api/tests/unit/audit/test_unit_audit_signals.py @@ -597,6 +597,7 @@ def test_send_feature_flag_went_live_signal__non_feature_state_instance__skips_s # Then mock_signal_send.assert_not_called() + def test_send_audit_log_event_to_grafana__edge_identity__calls_expected( mocker: MockerFixture, project: Project, @@ -625,4 +626,4 @@ def test_send_audit_log_event_to_grafana__edge_identity__calls_expected( ) grafana_wrapper_instance_mock.track_event_async.assert_called_once_with( event=grafana_wrapper_instance_mock.generate_event_data.return_value - ) \ No newline at end of file + ) From cf1ffa82b2ad0c6d0fefea130d0e14f7deb180ce Mon Sep 17 00:00:00 2001 From: Srijan Tripathi Date: Tue, 21 Jul 2026 20:35:14 +0530 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- api/tests/unit/audit/test_unit_audit_signals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/unit/audit/test_unit_audit_signals.py b/api/tests/unit/audit/test_unit_audit_signals.py index ec4164f69a6b..7178f21a7a6c 100644 --- a/api/tests/unit/audit/test_unit_audit_signals.py +++ b/api/tests/unit/audit/test_unit_audit_signals.py @@ -622,7 +622,7 @@ def test_send_audit_log_event_to_grafana__edge_identity__calls_expected( api_key=grafana_config.api_key, ) grafana_wrapper_instance_mock.generate_event_data.assert_called_once_with( - audit_log_record + audit_log_record=audit_log_record ) grafana_wrapper_instance_mock.track_event_async.assert_called_once_with( event=grafana_wrapper_instance_mock.generate_event_data.return_value