From 36a5af8d3f4e9202bba3141fcde4d5c94c55ebbe Mon Sep 17 00:00:00 2001 From: David Elizondo Date: Mon, 5 Dec 2022 23:32:48 +0000 Subject: [PATCH 1/3] Add event name information for external status check changes When editing the external status check at project settings now the event_type attribute of audit event contains a meaninful value and not the default value of audit_operation. Changelog: changed EE: true --- ee/lib/audit/external_status_check_changes_auditor.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ee/lib/audit/external_status_check_changes_auditor.rb b/ee/lib/audit/external_status_check_changes_auditor.rb index 6471fad97a12bf..9598b7b79813c3 100644 --- a/ee/lib/audit/external_status_check_changes_auditor.rb +++ b/ee/lib/audit/external_status_check_changes_auditor.rb @@ -9,8 +9,11 @@ def initialize(current_user, external_status_check) end def execute - audit_changes(:name, as: 'name', entity: @project, model: model) - audit_changes(:external_url, as: 'external url', entity: @project, model: model) + audit_changes(:name, as: 'name', entity: @project, model: model, + event_type: 'external_status_check_name_updated') + + audit_changes(:external_url, as: 'external url', entity: @project, + model: model, event_type: 'external_status_check_url_updated') end def attributes_from_auditable_model(column) -- GitLab From 31cf2afa30768b83acd5298addb96cf95917d5ae Mon Sep 17 00:00:00 2001 From: David Elizondo Date: Mon, 12 Dec 2022 12:11:14 -0600 Subject: [PATCH 2/3] Add spec for event name information for external status check changes Changelog: changed MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106095 EE: true --- .../external_status_check_changes_auditor.rb | 3 +- ...ernal_status_check_changes_auditor_spec.rb | 52 +++++++++++++++---- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/ee/lib/audit/external_status_check_changes_auditor.rb b/ee/lib/audit/external_status_check_changes_auditor.rb index 9598b7b79813c3..ede56775d2fcf5 100644 --- a/ee/lib/audit/external_status_check_changes_auditor.rb +++ b/ee/lib/audit/external_status_check_changes_auditor.rb @@ -13,7 +13,8 @@ def execute event_type: 'external_status_check_name_updated') audit_changes(:external_url, as: 'external url', entity: @project, - model: model, event_type: 'external_status_check_url_updated') + model: model, + event_type: 'external_status_check_url_updated') end def attributes_from_auditable_model(column) diff --git a/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb b/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb index f3521475e7b8c1..4ba71e91c7fe94 100644 --- a/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb @@ -5,7 +5,8 @@ RSpec.describe Audit::ExternalStatusCheckChangesAuditor do describe 'auditing external status check changes' do let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project) } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } let_it_be(:external_status_check) do create(:external_status_check, name: 'QA', @@ -13,10 +14,16 @@ project: project) end - let_it_be(:external_status_check_changes_auditor) { described_class.new(user, external_status_check) } + let_it_be(:external_status_check_changes_auditor) do + described_class.new( + user, external_status_check) + end before do - stub_licensed_features(extended_audit_events: true) + stub_licensed_features(audit_events: true, extended_audit_events: true) + stub_licensed_features(external_audit_events: true) + group.external_audit_event_destinations.create!( + destination_url: 'http://example.com') end let(:subject) { described_class.new(user, project.external_status_checks) } @@ -25,7 +32,10 @@ it 'creates an event when the name changes' do external_status_check.update!(name: 'QAv2') - expect { external_status_check_changes_auditor.execute }.to change { AuditEvent.count }.by(1) + expect { external_status_check_changes_auditor.execute }.to change { + AuditEvent.count + }.by(1) + expect(AuditEvent.last.details).to include({ change: 'name', from: 'QA', @@ -36,12 +46,34 @@ it 'creates an event when the external url changes' do external_status_check.update!(external_url: 'http://examplev2.com') - expect { external_status_check_changes_auditor.execute }.to change { AuditEvent.count }.by(1) - expect(AuditEvent.last.details).to include({ - change: 'external url', - from: 'http://examplev1.com', - to: 'http://examplev2.com' - }) + expect { external_status_check_changes_auditor.execute }.to change { + AuditEvent.count + }.by(1) + + expect(AuditEvent.last.details).to include( + { + change: 'external url', + from: 'http://examplev1.com', + to: 'http://examplev2.com' + }) + end + + it 'streams audit event when name changes', :aggregate_failures do + external_status_check.update!(name: 'QAv3') + + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with('external_status_check_name_updated', anything, anything) + + external_status_check_changes_auditor.execute + end + + it 'streams audit event when url changes', :aggregate_failures do + external_status_check.update!(external_url: 'http://examplev3.com') + + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with('external_status_check_url_updated', anything, anything) + + external_status_check_changes_auditor.execute end end end -- GitLab From 95c4ac9cbba3cd124eb564232bf1111a86283a1d Mon Sep 17 00:00:00 2001 From: David Elizondo Date: Wed, 14 Dec 2022 07:07:08 -0600 Subject: [PATCH 3/3] Replace anything param with any_args MR: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/106095 EE: true --- .../lib/audit/external_status_check_changes_auditor_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb b/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb index 4ba71e91c7fe94..8013502c25a3ed 100644 --- a/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/external_status_check_changes_auditor_spec.rb @@ -62,7 +62,7 @@ external_status_check.update!(name: 'QAv3') expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) - .with('external_status_check_name_updated', anything, anything) + .with('external_status_check_name_updated', any_args) external_status_check_changes_auditor.execute end @@ -71,7 +71,7 @@ external_status_check.update!(external_url: 'http://examplev3.com') expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) - .with('external_status_check_url_updated', anything, anything) + .with('external_status_check_url_updated', any_args) external_status_check_changes_auditor.execute end -- GitLab