diff --git a/ee/spec/workers/vulnerabilities/process_archived_events_worker_spec.rb b/ee/spec/workers/vulnerabilities/process_archived_events_worker_spec.rb index 61c53db9730f5c97e8fabd1308d2d845856dcff5..6d8a328ca4d27fcb7fde9f2e4964bf481a1d3f1b 100644 --- a/ee/spec/workers/vulnerabilities/process_archived_events_worker_spec.rb +++ b/ee/spec/workers/vulnerabilities/process_archived_events_worker_spec.rb @@ -17,6 +17,10 @@ }) end + before do + stub_feature_flags(update_vuln_reads_archived_via_event: [project, other_project, project_without_vulnerabilities]) + end + it_behaves_like 'worker with data consistency', described_class, data_consistency: :sticky subject(:use_event) { consume_event(subscriber: described_class, event: event) } diff --git a/ee/spec/workers/vulnerabilities/process_transfer_events_worker_spec.rb b/ee/spec/workers/vulnerabilities/process_transfer_events_worker_spec.rb index ac73f0573549014f9d91592f573ca87a0d6b24e8..c11b606613dfccd1589492437a53fb549e4d7f52 100644 --- a/ee/spec/workers/vulnerabilities/process_transfer_events_worker_spec.rb +++ b/ee/spec/workers/vulnerabilities/process_transfer_events_worker_spec.rb @@ -27,6 +27,11 @@ }) end + before do + stub_feature_flags(update_vuln_reads_traversal_ids_via_event: [project, other_project, + project_without_vulnerabilities, group]) + end + it_behaves_like 'worker with data consistency', described_class, data_consistency: :always subject(:use_event) { consume_event(subscriber: described_class, event: event) } diff --git a/lib/gitlab/event_store/event.rb b/lib/gitlab/event_store/event.rb index aecb4fd17c376cc90556c2d56047f834fd43db30..8458f6354721e3520726c13607391876a842dcb8 100644 --- a/lib/gitlab/event_store/event.rb +++ b/lib/gitlab/event_store/event.rb @@ -36,7 +36,7 @@ class << self def initialize(data:) validate_schema! validate_data!(data) - @data = data + @data = data.with_indifferent_access end def schema diff --git a/lib/gitlab/event_store/subscriber.rb b/lib/gitlab/event_store/subscriber.rb index 81770624cd9ca35498a8bdd9fe4b8332bb27a6fe..9445d37d25af337ed97037629a23b8ea1712fc42 100644 --- a/lib/gitlab/event_store/subscriber.rb +++ b/lib/gitlab/event_store/subscriber.rb @@ -43,7 +43,7 @@ def handle_event(event) private def construct_event(event_type, event_data) - event_type.new(data: event_data.with_indifferent_access) + event_type.new(data: event_data) end end end diff --git a/spec/lib/gitlab/event_store/event_spec.rb b/spec/lib/gitlab/event_store/event_spec.rb index 367b3334020372a3055f5f9b05d62c8b766ae2e3..a4a4e3de9925fb0ae22b7e5960b7cb20a323e8fb 100644 --- a/spec/lib/gitlab/event_store/event_spec.rb +++ b/spec/lib/gitlab/event_store/event_spec.rb @@ -7,7 +7,7 @@ RSpec.describe Gitlab::EventStore::Event, feature_category: :shared do let(:event_class) { stub_const('TestEvent', Class.new(described_class)) } let(:event) { event_class.new(data: data) } - let(:data) { { project_id: 123, project_path: 'org/the-project' } } + let(:data) { { 'project_id' => 123, 'project_path' => 'org/the-project' } } context 'when schema is not defined' do it 'raises an error on initialization' do @@ -31,6 +31,11 @@ def schema end end + it 'returns data with indifferent access' do + expect(event.data[:project_id]).to eq(123) + expect(event.data['project_id']).to eq(123) + end + describe 'schema validation' do context 'when data matches the schema' do it 'initializes the event correctly' do @@ -39,7 +44,7 @@ def schema end context 'when required properties are present as well as unknown properties' do - let(:data) { { project_id: 123, unknown_key: 'unknown_value' } } + let(:data) { { 'project_id' => 123, 'unknown_key' => 'unknown_value' } } it 'initializes the event correctly' do expect(event.data).to eq(data) diff --git a/spec/support/matchers/event_store.rb b/spec/support/matchers/event_store.rb index 582ea20218712ad7427018d4c7f8fa3ca0dd3a18..a074e96ed0e74b1fe366350c5f8ffbab0d1e7802 100644 --- a/spec/support/matchers/event_store.rb +++ b/spec/support/matchers/event_store.rb @@ -31,7 +31,7 @@ def match_data?(actual, expected) end chain :with do |expected_data| - @expected_data = expected_data + @expected_data = expected_data.with_indifferent_access end failure_message do