72 lines
1.8 KiB
Ruby
72 lines
1.8 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'fast_spec_helper'
|
||
|
|
||
|
RSpec.describe Gitlab::ErrorTracking::LogFormatter do
|
||
|
let(:exception) { StandardError.new('boom') }
|
||
|
let(:context_payload) do
|
||
|
{
|
||
|
server: 'local-hostname-of-the-server',
|
||
|
user: {
|
||
|
ip_address: '127.0.0.1',
|
||
|
username: 'root'
|
||
|
},
|
||
|
tags: {
|
||
|
locale: 'en',
|
||
|
feature_category: 'category_a'
|
||
|
},
|
||
|
extra: {
|
||
|
some_other_info: 'other_info',
|
||
|
sidekiq: {
|
||
|
'class' => 'HelloWorker',
|
||
|
'args' => ['senstive string', 1, 2],
|
||
|
'another_field' => 'field'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
|
||
|
before do
|
||
|
Raven.context.user[:user_flag] = 'flag'
|
||
|
Raven.context.tags[:shard] = 'catchall'
|
||
|
Raven.context.extra[:some_info] = 'info'
|
||
|
|
||
|
allow(exception).to receive(:backtrace).and_return(
|
||
|
[
|
||
|
'lib/gitlab/file_a.rb:1',
|
||
|
'lib/gitlab/file_b.rb:2'
|
||
|
]
|
||
|
)
|
||
|
end
|
||
|
|
||
|
after do
|
||
|
::Raven::Context.clear!
|
||
|
end
|
||
|
|
||
|
it 'appends error-related log fields and filters sensitive Sidekiq arguments' do
|
||
|
payload = described_class.new.generate_log(exception, context_payload)
|
||
|
|
||
|
expect(payload).to eql(
|
||
|
'exception.class' => 'StandardError',
|
||
|
'exception.message' => 'boom',
|
||
|
'exception.backtrace' => [
|
||
|
'lib/gitlab/file_a.rb:1',
|
||
|
'lib/gitlab/file_b.rb:2'
|
||
|
],
|
||
|
'user.ip_address' => '127.0.0.1',
|
||
|
'user.username' => 'root',
|
||
|
'user.user_flag' => 'flag',
|
||
|
'tags.locale' => 'en',
|
||
|
'tags.feature_category' => 'category_a',
|
||
|
'tags.shard' => 'catchall',
|
||
|
'extra.some_other_info' => 'other_info',
|
||
|
'extra.some_info' => 'info',
|
||
|
"extra.sidekiq" => {
|
||
|
"another_field" => "field",
|
||
|
"args" => ["[FILTERED]", "1", "2"],
|
||
|
"class" => "HelloWorker"
|
||
|
}
|
||
|
)
|
||
|
end
|
||
|
end
|