diff --git a/ee/lib/audit/group_changes_auditor.rb b/ee/lib/audit/group_changes_auditor.rb index c57782960cc9666f8b0fcac6282a5f66542bc2dd..05bf57a6b1dada932cda03230bf182b4ad53b991 100644 --- a/ee/lib/audit/group_changes_auditor.rb +++ b/ee/lib/audit/group_changes_auditor.rb @@ -2,20 +2,28 @@ module Audit class GroupChangesAuditor < BaseChangesAuditor - COLUMNS = %i[name path repository_size_limit visibility_level - request_access_enabled membership_lock lfs_enabled - shared_runners_minutes_limit - require_two_factor_authentication - two_factor_grace_period - project_creation_level].freeze - COLUMN_HUMAN_NAME = { visibility_level: 'visibility' }.freeze + EVENT_NAME_PER_COLUMN = { + name: 'group_name_updated', + path: 'group_path_updated', + repository_size_limit: 'group_repository_size_limit_updated', + visibility_level: 'group_visibility_level_updated', + request_access_enabled: 'group_request_access_enabled_updated', + membership_lock: 'group_membership_lock_updated', + lfs_enabled: 'group_lfs_enabled_updated', + shared_runners_minutes_limit: 'group_shared_runners_minutes_limit_updated', + require_two_factor_authentication: 'group_require_two_factor_authentication_updated', + two_factor_grace_period: 'group_two_factor_grace_period_updated', + project_creation_level: 'group_project_creation_level_updated' + }.freeze + def execute - COLUMNS.each do |column| - audit_changes(column, as: column_human_name(column), model: model) + EVENT_NAME_PER_COLUMN.each do |column, event_name| + audit_changes(column, as: column_human_name(column), model: model, + event_type: event_name) end end diff --git a/ee/spec/lib/audit/group_changes_auditor_spec.rb b/ee/spec/lib/audit/group_changes_auditor_spec.rb index d3ab775fcb18d777adacec96f069fc179b70d4ef..ddacbae630dede4e7880c27b72892d2a7422072d 100644 --- a/ee/spec/lib/audit/group_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/group_changes_auditor_spec.rb @@ -9,7 +9,8 @@ let(:foo_instance) { described_class.new(user, group) } 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 describe 'non audit changes' do @@ -41,7 +42,8 @@ it 'creates an event when attributes change' do # Exclude special cases covered from above - columns = described_class::COLUMNS - described_class::COLUMN_HUMAN_NAME.keys - [:project_creation_level] + columns = described_class::EVENT_NAME_PER_COLUMN.keys - + described_class::COLUMN_HUMAN_NAME.keys - [:project_creation_level] columns.each do |column| data = group.attributes[column.to_s] @@ -56,8 +58,12 @@ "#{data}-next" end + event_name = Audit::GroupChangesAuditor::EVENT_NAME_PER_COLUMN[column] group.update_attribute(column, value) + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with(event_name, anything, anything) + expect { foo_instance.execute }.to change(AuditEvent, :count).by(1) event = AuditEvent.last