From f454270db89807bfc315b342ecd8fe83f59e69a7 Mon Sep 17 00:00:00 2001 From: nrosandich Date: Wed, 14 Dec 2022 17:38:27 +1300 Subject: [PATCH 01/17] Add meaningful names for project feature updates --- .../audit/project_feature_changes_auditor.rb | 27 ++++++++++++++- .../project_feature_changes_auditor_spec.rb | 34 ++++++++++++++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index cbe45439e810bd..f402e6a14ef687 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -25,6 +25,29 @@ class ProjectFeatureChangesAuditor < BaseChangesAuditor :environments_access_level, :releases_access_level].freeze + EVENT_TYPE_PER_ATTR = { + merge_requests_access_level: 'project_feature_merge_requests_access_level_updated', + forking_access_level: 'project_feature_forking_access_level_updated', + issues_access_level: 'project_feature_issues_access_level_updated', + wiki_access_level: 'project_feature_wiki_access_level_updated', + snippets_access_level: 'project_feature_snippets_access_level_updated', + builds_access_level: 'project_feature_builds_access_level_updated', + repository_access_level: 'project_feature_repository_access_level_updated', + package_registry_access_level: 'project_feature_package_registry_access_level_updated', + pages_access_level: 'project_feature_pages_access_level_updated', + metrics_dashboard_access_level: 'project_feature_metrics_dashboard_access_level_updated', + analytics_access_level: 'project_feature_analytics_access_level_updated', + operations_access_level: 'project_feature_operations_access_level_updated', + requirements_access_level: 'project_feature_requirements_access_level_updated', + security_and_compliance_access_level: 'project_feature_security_and_compliance_access_level_updated', + container_registry_access_level: 'project_feature_container_registry_access_level_updated', + monitor_access_level: 'project_feature_monitor_access_level_updated', + infrastructure_access_level: 'project_feature_infrastructure_access_level_updated', + feature_flags_access_level: 'project_feature_feature_flags_access_level_updated', + environments_access_level: 'project_feature_environments_access_level_updated', + releases_access_level: 'project_feature_releases_access_level_updated' + }.freeze + def initialize(current_user, model, project) @project = project @@ -33,7 +56,9 @@ def initialize(current_user, model, project) def execute COLUMNS.each do |column| - audit_changes(column, as: column.to_s, entity: @project, model: model) + event_name = EVENT_TYPE_PER_ATTR[column] || 'audit_operation' + + audit_changes(column, as: column.to_s, entity: @project, model: model, event_type: event_name) end end diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 3a005e73f63720..1695a492b2a9aa 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -5,15 +5,18 @@ RSpec.describe Audit::ProjectFeatureChangesAuditor do describe '#execute' do let!(:user) { create(:user) } - let!(:project) { create(:project, :pages_enabled, visibility_level: 0) } + let!(:group) { create(:group) } + let!(:project) { create(:project, :pages_enabled, group: group, visibility_level: 0) } let(:features) { project.project_feature } - let(:foo_instance) { described_class.new(user, features, project) } + let(:subject) { described_class.new(user, features, project) } before do - stub_licensed_features(extended_audit_events: true) + stub_licensed_features(extended_audit_events: true, audit_events: true, external_audit_events: true) + group.add_owner(user) + group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end - it 'creates an event when any project feature level changes' do + it 'when project feature level changes' do columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } columns.each do |column| @@ -25,7 +28,8 @@ end features.update_attribute(column, new_value) - expect { foo_instance.execute }.to change(AuditEvent, :count).by(1) + + expect { subject.execute }.to change(AuditEvent, :count).by(1) event = AuditEvent.last expect(event.details[:from]).to eq ::Gitlab::VisibilityLevel.level_name(previous_value) @@ -33,5 +37,25 @@ expect(event.details[:change]).to eq column end end + + it 'when project feature level changes', :aggregate_failures do + columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } + + columns.each do |column| + event_name = "project_feature_#{column}_updated" + previous_value = features.method(column).call + new_value = if previous_value == ProjectFeature::DISABLED + ProjectFeature::ENABLED + else + ProjectFeature::DISABLED + end + + features.update_attribute(column, new_value) + + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with(event_name, anything, anything) + subject.execute + end + end end end -- GitLab From ab8d167aacb8b6f630998caacf94ad367743322e Mon Sep 17 00:00:00 2001 From: Danger bot Date: Wed, 14 Dec 2022 04:42:14 +0000 Subject: [PATCH 02/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 1695a492b2a9aa..b08d5c8a7e20bf 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -6,7 +6,7 @@ describe '#execute' do let!(:user) { create(:user) } let!(:group) { create(:group) } - let!(:project) { create(:project, :pages_enabled, group: group, visibility_level: 0) } + let_it_be(:project) { create(:project, :pages_enabled, group: group, visibility_level: 0) } let(:features) { project.project_feature } let(:subject) { described_class.new(user, features, project) } -- GitLab From 40ac603a4c9e9a5787e8cb3b5f9026a3eb9ff910 Mon Sep 17 00:00:00 2001 From: nrosandich Date: Wed, 14 Dec 2022 18:27:05 +1300 Subject: [PATCH 03/17] Update spec names --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index b08d5c8a7e20bf..81d593732e6ba5 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -16,7 +16,7 @@ group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end - it 'when project feature level changes' do + it 'creates an event when any project feature level changes' do columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } columns.each do |column| @@ -38,7 +38,7 @@ end end - it 'when project feature level changes', :aggregate_failures do + it 'streams an event when any project feature level changes', :aggregate_failures do columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } columns.each do |column| -- GitLab From 15f34f9165d666f6a3ba4965b58f38f450321842 Mon Sep 17 00:00:00 2001 From: nrosandich Date: Wed, 14 Dec 2022 20:12:47 +1300 Subject: [PATCH 04/17] Update spec names --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 81d593732e6ba5..4cf35c1429f133 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Audit::ProjectFeatureChangesAuditor do describe '#execute' do let!(:user) { create(:user) } - let!(:group) { create(:group) } + let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project, :pages_enabled, group: group, visibility_level: 0) } let(:features) { project.project_feature } let(:subject) { described_class.new(user, features, project) } -- GitLab From ff6752b23066acf02f2517cfee781ecd1d1c7c19 Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:30:52 +0000 Subject: [PATCH 05/17] Apply 1 suggestion(s) to 1 file(s) --- ee/lib/audit/project_feature_changes_auditor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index f402e6a14ef687..cf94433a82b9f9 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -25,7 +25,7 @@ class ProjectFeatureChangesAuditor < BaseChangesAuditor :environments_access_level, :releases_access_level].freeze - EVENT_TYPE_PER_ATTR = { + COLUMNS_EVENT_TYPE_HASH = { merge_requests_access_level: 'project_feature_merge_requests_access_level_updated', forking_access_level: 'project_feature_forking_access_level_updated', issues_access_level: 'project_feature_issues_access_level_updated', -- GitLab From 419cecb5df9096db05f902fe7f6c79ca942532c3 Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:30:56 +0000 Subject: [PATCH 06/17] Apply 1 suggestion(s) to 1 file(s) --- .../audit/project_feature_changes_auditor.rb | 20 ------------------- 1 file changed, 20 deletions(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index cf94433a82b9f9..fb086edb697a2a 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -4,26 +4,6 @@ module Audit class ProjectFeatureChangesAuditor < BaseChangesAuditor attr_accessor :project - COLUMNS = [:merge_requests_access_level, - :forking_access_level, - :issues_access_level, - :wiki_access_level, - :snippets_access_level, - :builds_access_level, - :repository_access_level, - :package_registry_access_level, - :pages_access_level, - :metrics_dashboard_access_level, - :analytics_access_level, - :operations_access_level, - :requirements_access_level, - :security_and_compliance_access_level, - :container_registry_access_level, - :monitor_access_level, - :infrastructure_access_level, - :feature_flags_access_level, - :environments_access_level, - :releases_access_level].freeze COLUMNS_EVENT_TYPE_HASH = { merge_requests_access_level: 'project_feature_merge_requests_access_level_updated', -- GitLab From 2b4c11b5f318419ceabce232b4d294ea2942e48d Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:31:03 +0000 Subject: [PATCH 07/17] Apply 1 suggestion(s) to 1 file(s) --- ee/lib/audit/project_feature_changes_auditor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index fb086edb697a2a..ed60c1b0a62fae 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -35,7 +35,7 @@ def initialize(current_user, model, project) end def execute - COLUMNS.each do |column| + COLUMNS_EVENT_TYPE_HASH.keys.each do |column| event_name = EVENT_TYPE_PER_ATTR[column] || 'audit_operation' audit_changes(column, as: column.to_s, entity: @project, model: model, event_type: event_name) -- GitLab From 64ecb9f67aa999e1069794f6a1f90272bcb6ac89 Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:31:09 +0000 Subject: [PATCH 08/17] Apply 1 suggestion(s) to 1 file(s) --- ee/lib/audit/project_feature_changes_auditor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index ed60c1b0a62fae..ccc25cafe04d33 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -45,7 +45,7 @@ def execute def attributes_from_auditable_model(column) base_data = { target_details: @project.full_path } - return base_data unless COLUMNS.include?(column) + return base_data unless COLUMNS_EVENT_TYPE_HASH.keys.include?(column) { from: ::Gitlab::VisibilityLevel.level_name(model.previous_changes[column].first), -- GitLab From 85649b72a579b35edc492b752c6c6d3901c4348b Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:32:58 +0000 Subject: [PATCH 09/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 4cf35c1429f133..db6bc3e6794f59 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Audit::ProjectFeatureChangesAuditor do +RSpec.describe Audit::ProjectFeatureChangesAuditor, feature_category: :audit_events do describe '#execute' do let!(:user) { create(:user) } let_it_be(:group) { create(:group) } -- GitLab From 0272f0df15d0e4eec1467523ea3370599e501071 Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:34:04 +0000 Subject: [PATCH 10/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index db6bc3e6794f59..44591246a7eb69 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -8,7 +8,7 @@ let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project, :pages_enabled, group: group, visibility_level: 0) } let(:features) { project.project_feature } - let(:subject) { described_class.new(user, features, project) } + let(:project_feature_changes_auditor) { described_class.new(user, features, project) } before do stub_licensed_features(extended_audit_events: true, audit_events: true, external_audit_events: true) -- GitLab From c152304e98e723bc9e2dbf53b1751c09e37195b8 Mon Sep 17 00:00:00 2001 From: Huzaifa Iftikhar Date: Wed, 14 Dec 2022 22:34:43 +0000 Subject: [PATCH 11/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 44591246a7eb69..372f91dc1a9cda 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -11,7 +11,7 @@ let(:project_feature_changes_auditor) { described_class.new(user, features, project) } before do - stub_licensed_features(extended_audit_events: true, audit_events: true, external_audit_events: true) + stub_licensed_features(extended_audit_events: true, audit_events: true) group.add_owner(user) group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end -- GitLab From 9c54e83625f5d7fd6d8b70b330ce632876c1c1c0 Mon Sep 17 00:00:00 2001 From: Nathan Rosandich Date: Wed, 14 Dec 2022 22:36:14 +0000 Subject: [PATCH 12/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 372f91dc1a9cda..81ab0a49b07fca 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -54,7 +54,7 @@ expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) .with(event_name, anything, anything) - subject.execute + project_feature_changes_auditor.execute end end end -- GitLab From 9732708ad772994bab3af1da12c98b5579114667 Mon Sep 17 00:00:00 2001 From: Nathan Rosandich Date: Wed, 14 Dec 2022 22:36:20 +0000 Subject: [PATCH 13/17] Apply 1 suggestion(s) to 1 file(s) --- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 81ab0a49b07fca..d9eeaf72dd3111 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -29,7 +29,7 @@ features.update_attribute(column, new_value) - expect { subject.execute }.to change(AuditEvent, :count).by(1) + expect { project_feature_changes_auditor.execute }.to change(AuditEvent, :count).by(1) event = AuditEvent.last expect(event.details[:from]).to eq ::Gitlab::VisibilityLevel.level_name(previous_value) -- GitLab From 050dcfb419b5d091de4df659e2ac58d494b5b32d Mon Sep 17 00:00:00 2001 From: nrosandich Date: Thu, 15 Dec 2022 14:05:11 +1300 Subject: [PATCH 14/17] Add external stub back --- ee/lib/audit/project_feature_changes_auditor.rb | 5 ++--- ee/spec/lib/audit/project_feature_changes_auditor_spec.rb | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index ccc25cafe04d33..7a796e05b67a13 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -4,7 +4,6 @@ module Audit class ProjectFeatureChangesAuditor < BaseChangesAuditor attr_accessor :project - COLUMNS_EVENT_TYPE_HASH = { merge_requests_access_level: 'project_feature_merge_requests_access_level_updated', forking_access_level: 'project_feature_forking_access_level_updated', @@ -35,7 +34,7 @@ def initialize(current_user, model, project) end def execute - COLUMNS_EVENT_TYPE_HASH.keys.each do |column| + COLUMNS_EVENT_TYPE_HASH.each_key do |column| event_name = EVENT_TYPE_PER_ATTR[column] || 'audit_operation' audit_changes(column, as: column.to_s, entity: @project, model: model, event_type: event_name) @@ -45,7 +44,7 @@ def execute def attributes_from_auditable_model(column) base_data = { target_details: @project.full_path } - return base_data unless COLUMNS_EVENT_TYPE_HASH.keys.include?(column) + return base_data unless COLUMNS_EVENT_TYPE_HASH.key?(column) { from: ::Gitlab::VisibilityLevel.level_name(model.previous_changes[column].first), diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index d9eeaf72dd3111..6d830932572b33 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -11,7 +11,7 @@ let(:project_feature_changes_auditor) { described_class.new(user, features, project) } before do - stub_licensed_features(extended_audit_events: true, audit_events: true) + stub_licensed_features(extended_audit_events: true, audit_events: true, external_audit_events: true) group.add_owner(user) group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end -- GitLab From 1a6145201af003ef2c125343470e5f3eecc2bd30 Mon Sep 17 00:00:00 2001 From: nrosandich Date: Thu, 15 Dec 2022 15:14:19 +1300 Subject: [PATCH 15/17] Get loop working correctly --- ee/lib/audit/project_feature_changes_auditor.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index 7a796e05b67a13..fede96efbfb586 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -35,7 +35,7 @@ def initialize(current_user, model, project) def execute COLUMNS_EVENT_TYPE_HASH.each_key do |column| - event_name = EVENT_TYPE_PER_ATTR[column] || 'audit_operation' + event_name = COLUMNS_EVENT_TYPE_HASH[column] || 'audit_operation' audit_changes(column, as: column.to_s, entity: @project, model: model, event_type: event_name) end -- GitLab From 988a88c209887b040c6b4034ee6dbb6c704530ea Mon Sep 17 00:00:00 2001 From: nrosandich Date: Thu, 15 Dec 2022 22:09:32 +1300 Subject: [PATCH 16/17] Consolidate test spec --- .../project_feature_changes_auditor_spec.rb | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb index 6d830932572b33..3b40ae2598b9fc 100644 --- a/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb +++ b/ee/spec/lib/audit/project_feature_changes_auditor_spec.rb @@ -16,10 +16,11 @@ group.external_audit_event_destinations.create!(destination_url: 'http://example.com') end - it 'creates an event when any project feature level changes' do + it 'creates an event when any project feature level changes', :aggregate_failures do columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } columns.each do |column| + event_name = "project_feature_#{column}_updated" previous_value = features.method(column).call new_value = if previous_value == ProjectFeature::DISABLED ProjectFeature::ENABLED @@ -29,6 +30,9 @@ features.update_attribute(column, new_value) + expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) + .with(event_name, anything, anything) + expect { project_feature_changes_auditor.execute }.to change(AuditEvent, :count).by(1) event = AuditEvent.last @@ -37,25 +41,5 @@ expect(event.details[:change]).to eq column end end - - it 'streams an event when any project feature level changes', :aggregate_failures do - columns = project.project_feature.attributes.keys.select { |attr| attr.end_with?('level') } - - columns.each do |column| - event_name = "project_feature_#{column}_updated" - previous_value = features.method(column).call - new_value = if previous_value == ProjectFeature::DISABLED - ProjectFeature::ENABLED - else - ProjectFeature::DISABLED - end - - features.update_attribute(column, new_value) - - expect(AuditEvents::AuditEventStreamingWorker).to receive(:perform_async) - .with(event_name, anything, anything) - project_feature_changes_auditor.execute - end - end end end -- GitLab From eb06673d412004a990c274a60d4a2c49088dbcc6 Mon Sep 17 00:00:00 2001 From: nrosandich Date: Fri, 16 Dec 2022 08:03:38 +1300 Subject: [PATCH 17/17] Add meaningful names for project feature updates EE: true --- ee/lib/audit/project_feature_changes_auditor.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ee/lib/audit/project_feature_changes_auditor.rb b/ee/lib/audit/project_feature_changes_auditor.rb index fede96efbfb586..310abd42d80e75 100644 --- a/ee/lib/audit/project_feature_changes_auditor.rb +++ b/ee/lib/audit/project_feature_changes_auditor.rb @@ -34,9 +34,7 @@ def initialize(current_user, model, project) end def execute - COLUMNS_EVENT_TYPE_HASH.each_key do |column| - event_name = COLUMNS_EVENT_TYPE_HASH[column] || 'audit_operation' - + COLUMNS_EVENT_TYPE_HASH.each do |column, event_name| audit_changes(column, as: column.to_s, entity: @project, model: model, event_type: event_name) end end -- GitLab