diff options
Diffstat (limited to 'spec/requests/api/error_tracking_collector_spec.rb')
-rw-r--r-- | spec/requests/api/error_tracking_collector_spec.rb | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/spec/requests/api/error_tracking_collector_spec.rb b/spec/requests/api/error_tracking_collector_spec.rb index 52d63410e7a..4b186657c4a 100644 --- a/spec/requests/api/error_tracking_collector_spec.rb +++ b/spec/requests/api/error_tracking_collector_spec.rb @@ -4,15 +4,17 @@ require 'spec_helper' RSpec.describe API::ErrorTrackingCollector do let_it_be(:project) { create(:project, :private) } - let_it_be(:setting) { create(:project_error_tracking_setting, project: project) } + let_it_be(:setting) { create(:project_error_tracking_setting, :integrated, project: project) } + let_it_be(:client_key) { create(:error_tracking_client_key, project: project) } describe "POST /error_tracking/collector/api/:id/envelope" do let_it_be(:raw_event) { fixture_file('error_tracking/event.txt') } let_it_be(:url) { "/error_tracking/collector/api/#{project.id}/envelope" } let(:params) { raw_event } + let(:headers) { { 'X-Sentry-Auth' => "Sentry sentry_key=#{client_key.public_key}" } } - subject { post api(url), params: params } + subject { post api(url), params: params, headers: headers } RSpec.shared_examples 'not found' do it 'reponds with 404' do @@ -38,6 +40,14 @@ RSpec.describe API::ErrorTrackingCollector do it_behaves_like 'not found' end + context 'integrated error tracking is disabled' do + before do + setting.update!(integrated: false) + end + + it_behaves_like 'not found' + end + context 'feature flag is disabled' do before do stub_feature_flags(integrated_error_tracking: false) @@ -46,6 +56,24 @@ RSpec.describe API::ErrorTrackingCollector do it_behaves_like 'not found' end + context 'auth headers are missing' do + let(:headers) { {} } + + it_behaves_like 'bad request' + end + + context 'public key is wrong' do + let(:headers) { { 'X-Sentry-Auth' => "Sentry sentry_key=glet_1fedb514e17f4b958435093deb02048c" } } + + it_behaves_like 'not found' + end + + context 'public key is inactive' do + let(:client_key) { create(:error_tracking_client_key, :disabled, project: project) } + + it_behaves_like 'not found' + end + context 'empty body' do let(:params) { '' } |