diff options
Diffstat (limited to 'spec')
5 files changed, 87 insertions, 1 deletions
diff --git a/spec/frontend/error_tracking/components/error_tracking_list_spec.js b/spec/frontend/error_tracking/components/error_tracking_list_spec.js index 805ada54509..adb2eaaf04e 100644 --- a/spec/frontend/error_tracking/components/error_tracking_list_spec.js +++ b/spec/frontend/error_tracking/components/error_tracking_list_spec.js @@ -314,6 +314,43 @@ describe('ErrorTrackingList', () => { }); }); + describe('when the resolve button is clicked with non numberic error id', () => { + beforeEach(() => { + store.state.list.loading = false; + store.state.list.errors = [ + { + id: 'abc', + title: 'PG::ConnectionBad: FATAL', + type: 'error', + userCount: 0, + count: '53', + firstSeen: '2019-05-30T07:21:46Z', + lastSeen: '2019-11-06T03:21:39Z', + status: 'unresolved', + }, + ]; + + mountComponent({ + stubs: { + GlTable: false, + GlLink: false, + }, + }); + }); + + it('should show about:blank link', () => { + findErrorActions().vm.$emit('update-issue-status', { + errorId: 'abc', + status: 'resolved', + }); + + expect(actions.updateStatus).toHaveBeenCalledWith(expect.anything(), { + endpoint: 'about:blank', + status: 'resolved', + }); + }); + }); + describe('When error tracking is disabled and user is not allowed to enable it', () => { beforeEach(() => { mountComponent({ diff --git a/spec/lib/error_tracking/sentry_client/event_spec.rb b/spec/lib/error_tracking/sentry_client/event_spec.rb index d65bfa31018..e7a9db771b6 100644 --- a/spec/lib/error_tracking/sentry_client/event_spec.rb +++ b/spec/lib/error_tracking/sentry_client/event_spec.rb @@ -72,5 +72,13 @@ RSpec.describe ErrorTracking::SentryClient do end end end + + it_behaves_like 'non-numeric input handling in Sentry response', 'issue_id' do + let(:sentry_api_response) do + sample_response.tap do |event| + event[:groupID] = id_input + end + end + end end end diff --git a/spec/lib/error_tracking/sentry_client/issue_spec.rb b/spec/lib/error_tracking/sentry_client/issue_spec.rb index 1468a1ff7eb..ac6a4b9e8cd 100644 --- a/spec/lib/error_tracking/sentry_client/issue_spec.rb +++ b/spec/lib/error_tracking/sentry_client/issue_spec.rb @@ -199,6 +199,15 @@ RSpec.describe ErrorTracking::SentryClient::Issue do it_behaves_like 'issues have correct return type', Gitlab::ErrorTracking::Error it_behaves_like 'issues have correct length', 3 end + + it_behaves_like 'non-numeric input handling in Sentry response', 'id' do + let(:sentry_api_response) do + issues_sample_response.first(1).map do |issue| + issue[:id] = id_input + issue + end + end + end end describe '#issue_details' do @@ -208,8 +217,8 @@ RSpec.describe ErrorTracking::SentryClient::Issue do ) end - let(:sentry_request_url) { "#{sentry_url}/issues/#{issue_id}/" } let(:sentry_api_response) { issue_sample_response } + let(:sentry_request_url) { "#{sentry_url}/issues/#{issue_id}/" } let!(:sentry_api_request) { stub_sentry_request(sentry_request_url, body: sentry_api_response) } subject { client.issue_details(issue_id: issue_id) } @@ -298,6 +307,14 @@ RSpec.describe ErrorTracking::SentryClient::Issue do expect(subject.tags).to eq({ level: issue_sample_response['level'], logger: issue_sample_response['logger'] }) end end + + it_behaves_like 'non-numeric input handling in Sentry response', 'id' do + let(:sentry_api_response) do + issue_sample_response.tap do |issue| + issue[:id] = id_input + end + end + end end describe '#update_issue' do diff --git a/spec/lib/gitlab/checks/tag_check_spec.rb b/spec/lib/gitlab/checks/tag_check_spec.rb index 6cd3a2d1c07..50ffa5fad10 100644 --- a/spec/lib/gitlab/checks/tag_check_spec.rb +++ b/spec/lib/gitlab/checks/tag_check_spec.rb @@ -81,6 +81,14 @@ RSpec.describe Gitlab::Checks::TagCheck do it 'allows tag creation' do expect { subject.validate! }.not_to raise_error end + + context 'when tag name is the same as default branch' do + let(:ref) { "refs/tags/#{project.default_branch}" } + + it 'is prevented' do + expect { subject.validate! }.to raise_error(Gitlab::GitAccess::ForbiddenError, /cannot use default branch name to create a tag/) + end + end end end end diff --git a/spec/support/shared_examples/lib/sentry/client_shared_examples.rb b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb index 1c0e0061385..71b32005c55 100644 --- a/spec/support/shared_examples/lib/sentry/client_shared_examples.rb +++ b/spec/support/shared_examples/lib/sentry/client_shared_examples.rb @@ -59,6 +59,22 @@ RSpec.shared_examples 'maps Sentry exceptions' do |http_method| end end +RSpec.shared_examples 'non-numeric input handling in Sentry response' do |field| + context 'with non-numeric error id' do + where(:id_input) do + ['string', '-1', '1\n2'] + end + + with_them do + it 'raises exception' do + message = %(Sentry API response contains invalid value for field "#{field}": #{id_input.inspect} is not numeric) + + expect { subject }.to raise_error(ErrorTracking::SentryClient::InvalidFieldValueError, message) + end + end + end +end + # Expects to following variables: # - subject # - sentry_api_response |