diff options
Diffstat (limited to 'spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb')
-rw-r--r-- | spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb | 93 |
1 files changed, 57 insertions, 36 deletions
diff --git a/spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb b/spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb index 0db40eca989..24f5299d357 100644 --- a/spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb +++ b/spec/lib/gitlab/error_tracking/processor/context_payload_processor_spec.rb @@ -1,45 +1,66 @@ # frozen_string_literal: true -require 'fast_spec_helper' +require 'spec_helper' RSpec.describe Gitlab::ErrorTracking::Processor::ContextPayloadProcessor do - subject(:processor) { described_class.new } - - before do - allow_next_instance_of(Gitlab::ErrorTracking::ContextPayloadGenerator) do |generator| - allow(generator).to receive(:generate).and_return( - user: { username: 'root' }, - tags: { locale: 'en', program: 'test', feature_category: 'feature_a', correlation_id: 'cid' }, - extra: { some_info: 'info' } - ) + shared_examples 'processing an exception' do + before do + allow_next_instance_of(Gitlab::ErrorTracking::ContextPayloadGenerator) do |generator| + allow(generator).to receive(:generate).and_return( + user: { username: 'root' }, + tags: { locale: 'en', program: 'test', feature_category: 'feature_a', correlation_id: 'cid' }, + extra: { some_info: 'info' } + ) + end end - end - it 'merges the context payload into event payload' do - payload = { - user: { ip_address: '127.0.0.1' }, - tags: { priority: 'high' }, - extra: { sidekiq: { class: 'SomeWorker', args: ['[FILTERED]', 1, 2] } } - } - - processor.process(payload) - - expect(payload).to eql( - user: { - ip_address: '127.0.0.1', - username: 'root' - }, - tags: { - priority: 'high', - locale: 'en', - program: 'test', - feature_category: 'feature_a', - correlation_id: 'cid' - }, - extra: { - some_info: 'info', - sidekiq: { class: 'SomeWorker', args: ['[FILTERED]', 1, 2] } + let(:payload) do + { + user: { ip_address: '127.0.0.1' }, + tags: { priority: 'high' }, + extra: { sidekiq: { class: 'SomeWorker', args: ['[FILTERED]', 1, 2] } } } - ) + end + + it 'merges the context payload into event payload', :aggregate_failures do + expect(result_hash[:user]).to include(ip_address: '127.0.0.1', username: 'root') + + expect(result_hash[:tags]) + .to include(priority: 'high', + locale: 'en', + program: 'test', + feature_category: 'feature_a', + correlation_id: 'cid') + + expect(result_hash[:extra]) + .to include(some_info: 'info', + sidekiq: { class: 'SomeWorker', args: ['[FILTERED]', 1, 2] }) + end + end + + describe '.call' do + let(:event) { Raven::Event.new(payload) } + let(:result_hash) { described_class.call(event).to_hash } + + it_behaves_like 'processing an exception' + + context 'when followed by #process' do + let(:result_hash) { described_class.new.process(described_class.call(event).to_hash) } + + it_behaves_like 'processing an exception' + end + end + + describe '#process' do + let(:event) { Raven::Event.new(payload) } + let(:result_hash) { described_class.new.process(event.to_hash) } + + context 'with sentry_processors_before_send disabled' do + before do + stub_feature_flags(sentry_processors_before_send: false) + end + + it_behaves_like 'processing an exception' + end end end |