diff --git a/ee/lib/audit/project_ci_cd_setting_changes_auditor.rb b/ee/lib/audit/project_ci_cd_setting_changes_auditor.rb index edae2727b082bf8290619506ec8dec7b2f679d08..e77621240b9a445adef59a5a1ad52b29605c3f6d 100644 --- a/ee/lib/audit/project_ci_cd_setting_changes_auditor.rb +++ b/ee/lib/audit/project_ci_cd_setting_changes_auditor.rb @@ -12,11 +12,23 @@ def execute return if model.blank? if should_audit?(:merge_pipelines_enabled) - audit_changes(:merge_pipelines_enabled, as: 'merge_pipelines_enabled', entity: @project, model: model) + audit_changes( + :merge_pipelines_enabled, + as: 'merge_pipelines_enabled', + entity: @project, + model: model, + event_type: 'project_cicd_merge_pipelines_enabled_updated' + ) end if should_audit?(:merge_trains_enabled) - audit_changes(:merge_trains_enabled, as: 'merge_trains_enabled', entity: @project, model: model) + audit_changes( + :merge_trains_enabled, + as: 'merge_trains_enabled', + entity: @project, + model: model, + event_type: 'project_cicd_merge_trains_enabled_updated' + ) end nil diff --git a/ee/spec/lib/audit/project_ci_cd_setting_changes_auditor_spec.rb b/ee/spec/lib/audit/project_ci_cd_setting_changes_auditor_spec.rb index 711367b46d05315867e6607ffc9fc6d57330ba08..80f63a49f04de666328d2d91a415a671e3ef368b 100644 --- a/ee/spec/lib/audit/project_ci_cd_setting_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_ci_cd_setting_changes_auditor_spec.rb @@ -2,16 +2,24 @@ require 'spec_helper' -RSpec.describe Audit::ProjectCiCdSettingChangesAuditor do +RSpec.describe Audit::ProjectCiCdSettingChangesAuditor, feature_category: :audit_events do using RSpec::Parameterized::TableSyntax describe '#execute' do let_it_be(:user) { create(:user) } - let_it_be(:project) { create(:project) } + let_it_be(:group) { create(:group) } + let_it_be(:project) do + create( + :project, + group: group + ) + end + let_it_be(:ci_cd_settings) { project.ci_cd_settings } let_it_be(:project_ci_cd_setting_changes_auditor) { described_class.new(user, ci_cd_settings, project) } before do - stub_licensed_features(extended_audit_events: true) + stub_licensed_features(extended_audit_events: true, external_audit_events: true) + group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end context 'when auditable boolean column is changed' do @@ -25,12 +33,11 @@ before do project.ci_cd_settings.update_attribute(column, prev_value) + project.ci_cd_settings.update_attribute(column, new_value) end with_them do it 'creates an audit event' do - project.ci_cd_settings.update_attribute(column, new_value) - expect { project_ci_cd_setting_changes_auditor.execute }.to change(AuditEvent, :count).by(1) expect(AuditEvent.last.details).to include({ change: column, @@ -38,6 +45,13 @@ to: new_value }) end + + it 'streams correct audit event', :aggregate_failures do + event_name = "project_cicd_#{column}_updated" + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with(event_name, anything, anything) + project_ci_cd_setting_changes_auditor.execute + end end end