Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/services/error_tracking/collect_error_service_spec.rb')
-rw-r--r--spec/services/error_tracking/collect_error_service_spec.rb41
1 files changed, 37 insertions, 4 deletions
diff --git a/spec/services/error_tracking/collect_error_service_spec.rb b/spec/services/error_tracking/collect_error_service_spec.rb
index 52d095148c8..2b16612dac3 100644
--- a/spec/services/error_tracking/collect_error_service_spec.rb
+++ b/spec/services/error_tracking/collect_error_service_spec.rb
@@ -4,8 +4,9 @@ require 'spec_helper'
RSpec.describe ErrorTracking::CollectErrorService do
let_it_be(:project) { create(:project) }
- let_it_be(:parsed_event_file) { 'error_tracking/parsed_event.json' }
- let_it_be(:parsed_event) { Gitlab::Json.parse(fixture_file(parsed_event_file)) }
+
+ let(:parsed_event_file) { 'error_tracking/parsed_event.json' }
+ let(:parsed_event) { parse_valid_event(parsed_event_file) }
subject { described_class.new(project, nil, event: parsed_event) }
@@ -43,7 +44,7 @@ RSpec.describe ErrorTracking::CollectErrorService do
end
context 'python sdk event' do
- let(:parsed_event) { Gitlab::Json.parse(fixture_file('error_tracking/python_event.json')) }
+ let(:parsed_event_file) { 'error_tracking/python_event.json' }
it 'creates a valid event' do
expect { subject.execute }.to change { ErrorTracking::ErrorEvent.count }.by(1)
@@ -75,7 +76,7 @@ RSpec.describe ErrorTracking::CollectErrorService do
end
context 'go payload' do
- let(:parsed_event) { Gitlab::Json.parse(fixture_file('error_tracking/go_parsed_event.json')) }
+ let(:parsed_event_file) { 'error_tracking/go_parsed_event.json' }
it 'has correct values set' do
subject.execute
@@ -92,6 +93,38 @@ RSpec.describe ErrorTracking::CollectErrorService do
expect(event.environment).to eq 'Accumulate'
expect(event.payload).to eq parsed_event
end
+
+ context 'with two exceptions' do
+ let(:parsed_event_file) { 'error_tracking/go_two_exception_event.json' }
+
+ it 'reports using second exception', :aggregate_failures do
+ subject.execute
+
+ event = ErrorTracking::ErrorEvent.last
+ error = event.error
+
+ expect(error.name).to eq '*url.Error'
+ expect(error.description).to eq(%(Get \"foobar\": unsupported protocol scheme \"\"))
+ expect(error.platform).to eq 'go'
+ expect(error.actor).to eq('main(main)')
+
+ expect(event.description).to eq(%(Get \"foobar\": unsupported protocol scheme \"\"))
+ expect(event.payload).to eq parsed_event
+ end
+ end
end
end
+
+ private
+
+ def parse_valid_event(parsed_event_file)
+ parsed_event = Gitlab::Json.parse(fixture_file(parsed_event_file))
+
+ validator = ErrorTracking::Collector::PayloadValidator.new
+ # This a precondition for all specs to verify that
+ # submitted JSON payload is valid.
+ expect(validator).to be_valid(parsed_event)
+
+ parsed_event
+ end
end