From 8b45369d72a3636201af8253fb61ed7a05febcf2 Mon Sep 17 00:00:00 2001 From: rpereira2 Date: Mon, 4 Feb 2019 21:39:20 +0530 Subject: Rename ListSentryProjectsService --- .../error_tracking/list_sentry_projects_service.rb | 44 ------- .../list_sentry_projects_service_spec.rb | 136 --------------------- 2 files changed, 180 deletions(-) delete mode 100644 app/services/error_tracking/list_sentry_projects_service.rb delete mode 100644 spec/services/error_tracking/list_sentry_projects_service_spec.rb diff --git a/app/services/error_tracking/list_sentry_projects_service.rb b/app/services/error_tracking/list_sentry_projects_service.rb deleted file mode 100644 index 2c488b10435..00000000000 --- a/app/services/error_tracking/list_sentry_projects_service.rb +++ /dev/null @@ -1,44 +0,0 @@ -# frozen_string_literal: true - -module ErrorTracking - class ListSentryProjectsService < ::BaseService - def execute - return error('access denied') unless can_read? - - setting = project_error_tracking_setting - - unless setting.valid? - return error(setting.errors.full_messages.join(', '), :bad_request) - end - - begin - result = setting.list_sentry_projects - rescue Sentry::Client::Error => e - return error(e.message, :bad_request) - rescue Sentry::Client::SentryError => e - return error(e.message, :unprocessable_entity) - end - - success(projects: result[:projects]) - end - - private - - def project_error_tracking_setting - (project.error_tracking_setting || project.build_error_tracking_setting).tap do |setting| - setting.api_url = ErrorTracking::ProjectErrorTrackingSetting.build_api_url_from( - api_host: params[:api_host], - organization_slug: nil, - project_slug: nil - ) - - setting.token = params[:token] - setting.enabled = true - end - end - - def can_read? - can?(current_user, :read_sentry_issue, project) - end - end -end diff --git a/spec/services/error_tracking/list_sentry_projects_service_spec.rb b/spec/services/error_tracking/list_sentry_projects_service_spec.rb deleted file mode 100644 index 77b253be2a2..00000000000 --- a/spec/services/error_tracking/list_sentry_projects_service_spec.rb +++ /dev/null @@ -1,136 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe ErrorTracking::ListSentryProjectsService do - set(:user) { create(:user) } - set(:project) { create(:project) } - - let(:sentry_url) { 'https://sentrytest.gitlab.com/api/0/projects/sentry-org/sentry-project' } - let(:token) { 'test-token' } - let(:new_api_host) { 'https://gitlab.com/' } - let(:new_token) { 'new-token' } - let(:params) { ActionController::Parameters.new(api_host: new_api_host, token: new_token) } - - let(:error_tracking_setting) do - create(:project_error_tracking_setting, api_url: sentry_url, token: token, project: project) - end - - subject { described_class.new(project, user, params) } - - before do - project.add_reporter(user) - end - - describe '#execute' do - let(:result) { subject.execute } - - context 'with authorized user' do - let(:sentry_client) { spy(:sentry_client) } - - before do - expect(project).to receive(:error_tracking_setting).at_least(:once) - .and_return(error_tracking_setting) - end - - context 'call sentry client' do - it 'uses new api_url and token' do - expect(Sentry::Client).to receive(:new) - .with(new_api_host + 'api/0/projects/', new_token).and_return(sentry_client) - expect(sentry_client).to receive(:list_projects).and_return([]) - - subject.execute - end - end - - context 'sentry client raises exception' do - before do - expect(error_tracking_setting).to receive(:list_sentry_projects) - .and_raise(Sentry::Client::Error, 'Sentry response error: 500') - end - - it 'returns error response' do - expect(result[:message]).to eq('Sentry response error: 500') - expect(result[:http_status]).to eq(:bad_request) - end - end - - context 'with invalid url' do - let(:params) do - ActionController::Parameters.new( - api_host: 'https://localhost', - token: new_token - ) - end - - before do - error_tracking_setting.enabled = false - end - - it 'returns error' do - expect(result[:message]).to start_with('Api url is blocked') - expect(error_tracking_setting).not_to be_valid - end - end - - context 'when list_sentry_projects returns projects' do - let(:projects) { [:list, :of, :projects] } - - before do - expect(error_tracking_setting) - .to receive(:list_sentry_projects).and_return(projects: projects) - end - - it 'returns the projects' do - expect(result).to eq(status: :success, projects: projects) - end - end - end - - context 'with unauthorized user' do - before do - project.add_guest(user) - end - - it 'returns error' do - expect(result).to include(status: :error, message: 'access denied') - end - end - - context 'with error tracking disabled' do - before do - expect(project).to receive(:error_tracking_setting).at_least(:once) - .and_return(error_tracking_setting) - expect(error_tracking_setting) - .to receive(:list_sentry_projects).and_return(projects: []) - - error_tracking_setting.enabled = false - end - - it 'ignores enabled flag' do - expect(result).to include(status: :success, projects: []) - end - end - - context 'error_tracking_setting is nil' do - let(:sentry_client) { spy(:sentry_client) } - - before do - expect(project).to receive(:error_tracking_setting).at_least(:once) - .and_return(nil) - - expect(Sentry::Client).to receive(:new) - .with(new_api_host + 'api/0/projects/', new_token) - .and_return(sentry_client) - - expect(sentry_client).to receive(:list_projects) - .and_return([:project1, :project2]) - end - - it 'builds a new error_tracking_setting' do - expect(result[:projects]).to eq([:project1, :project2]) - expect(project.error_tracking_setting).to be_nil - end - end - end -end -- cgit v1.2.1