Skip to content
代码片段 群组 项目
未验证 提交 ab9962a8 编辑于 作者: Javiera Tapia's avatar Javiera Tapia 提交者: GitLab
浏览文件

Merge branch 'bwill/fix-update-vuln-reads-archived-via-event-ff' into 'master'

Ensure Event#data has indifferent access

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/145585



Merged-by: default avatarJaviera Tapia <jtapia@gitlab.com>
Approved-by: default avatarJaviera Tapia <jtapia@gitlab.com>
Co-authored-by: default avatarBrian Williams <bwilliams@gitlab.com>
No related branches found
No related tags found
无相关合并请求
...@@ -17,6 +17,10 @@ ...@@ -17,6 +17,10 @@
}) })
end 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 it_behaves_like 'worker with data consistency', described_class, data_consistency: :sticky
subject(:use_event) { consume_event(subscriber: described_class, event: event) } subject(:use_event) { consume_event(subscriber: described_class, event: event) }
......
...@@ -27,6 +27,11 @@ ...@@ -27,6 +27,11 @@
}) })
end 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 it_behaves_like 'worker with data consistency', described_class, data_consistency: :always
subject(:use_event) { consume_event(subscriber: described_class, event: event) } subject(:use_event) { consume_event(subscriber: described_class, event: event) }
......
...@@ -36,7 +36,7 @@ class << self ...@@ -36,7 +36,7 @@ class << self
def initialize(data:) def initialize(data:)
validate_schema! validate_schema!
validate_data!(data) validate_data!(data)
@data = data @data = data.with_indifferent_access
end end
def schema def schema
......
...@@ -43,7 +43,7 @@ def handle_event(event) ...@@ -43,7 +43,7 @@ def handle_event(event)
private private
def construct_event(event_type, event_data) 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 end
end end
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
RSpec.describe Gitlab::EventStore::Event, feature_category: :shared do RSpec.describe Gitlab::EventStore::Event, feature_category: :shared do
let(:event_class) { stub_const('TestEvent', Class.new(described_class)) } let(:event_class) { stub_const('TestEvent', Class.new(described_class)) }
let(:event) { event_class.new(data: data) } 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 context 'when schema is not defined' do
it 'raises an error on initialization' do it 'raises an error on initialization' do
...@@ -31,6 +31,11 @@ def schema ...@@ -31,6 +31,11 @@ def schema
end end
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 describe 'schema validation' do
context 'when data matches the schema' do context 'when data matches the schema' do
it 'initializes the event correctly' do it 'initializes the event correctly' do
...@@ -39,7 +44,7 @@ def schema ...@@ -39,7 +44,7 @@ def schema
end end
context 'when required properties are present as well as unknown properties' do 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 it 'initializes the event correctly' do
expect(event.data).to eq(data) expect(event.data).to eq(data)
......
...@@ -31,7 +31,7 @@ def match_data?(actual, expected) ...@@ -31,7 +31,7 @@ def match_data?(actual, expected)
end end
chain :with do |expected_data| chain :with do |expected_data|
@expected_data = expected_data @expected_data = expected_data.with_indifferent_access
end end
failure_message do failure_message do
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册