diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index 3a39cb6d4ca3ed63c8fae03acccff90b870ff9f1..6745ca104a9fe38bb23d2df492ba77371dbc45b8 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -2209,7 +2209,6 @@ RSpec/ContextWording: - 'spec/presenters/search_service_presenter_spec.rb' - 'spec/presenters/user_presenter_spec.rb' - 'spec/presenters/web_hook_log_presenter_spec.rb' - - 'spec/requests/admin/clusters/integrations_controller_spec.rb' - 'spec/requests/admin/integrations_controller_spec.rb' - 'spec/requests/api/access_requests_spec.rb' - 'spec/requests/api/admin/ci/variables_spec.rb' @@ -2370,7 +2369,6 @@ RSpec/ContextWording: - 'spec/requests/dashboard/projects_controller_spec.rb' - 'spec/requests/dashboard_controller_spec.rb' - 'spec/requests/git_http_spec.rb' - - 'spec/requests/groups/clusters/integrations_controller_spec.rb' - 'spec/requests/groups/crm/contacts_controller_spec.rb' - 'spec/requests/groups/crm/organizations_controller_spec.rb' - 'spec/requests/groups/milestones_controller_spec.rb' @@ -2385,7 +2383,6 @@ RSpec/ContextWording: - 'spec/requests/mailgun/webhooks_controller_spec.rb' - 'spec/requests/oauth_tokens_spec.rb' - 'spec/requests/openid_connect_spec.rb' - - 'spec/requests/projects/clusters/integrations_controller_spec.rb' - 'spec/requests/projects/commits_controller_spec.rb' - 'spec/requests/projects/google_cloud/configuration_controller_spec.rb' - 'spec/requests/projects/google_cloud/databases_controller_spec.rb' diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index 4cb7ee60ad5c05c7e3d71455010f98efba6f4703..e1b8fd50f4ea66fbc5c66f3b1752483fa3877169 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -4754,7 +4754,6 @@ RSpec/FeatureCategory: - 'spec/requests/api/graphql/mutations/merge_requests/set_labels_spec.rb' - 'spec/requests/api/resource_state_events_spec.rb' - 'spec/requests/api/task_completion_status_spec.rb' - - 'spec/requests/groups/clusters/integrations_controller_spec.rb' - 'spec/routing/admin_routing_spec.rb' - 'spec/routing/environments_spec.rb' - 'spec/routing/git_http_routing_spec.rb' diff --git a/.rubocop_todo/style/class_and_module_children.yml b/.rubocop_todo/style/class_and_module_children.yml index 61b5456eff850d0ec024631ad84cc390cce10bd9..f05a2c6185906fabe0cdcf9006eb31994cf1f21a 100644 --- a/.rubocop_todo/style/class_and_module_children.yml +++ b/.rubocop_todo/style/class_and_module_children.yml @@ -8,7 +8,6 @@ Style/ClassAndModuleChildren: - 'app/controllers/admin/application_settings/appearances_controller.rb' - 'app/controllers/admin/application_settings_controller.rb' - 'app/controllers/admin/applications_controller.rb' - - 'app/controllers/admin/clusters/integrations_controller.rb' - 'app/controllers/admin/clusters_controller.rb' - 'app/controllers/admin/cohorts_controller.rb' - 'app/controllers/admin/dashboard_controller.rb' @@ -62,7 +61,6 @@ Style/ClassAndModuleChildren: - 'app/controllers/groups/autocomplete_sources_controller.rb' - 'app/controllers/groups/avatars_controller.rb' - 'app/controllers/groups/boards_controller.rb' - - 'app/controllers/groups/clusters/integrations_controller.rb' - 'app/controllers/groups/clusters_controller.rb' - 'app/controllers/groups/crm/contacts_controller.rb' - 'app/controllers/groups/crm/organizations_controller.rb' @@ -131,7 +129,6 @@ Style/ClassAndModuleChildren: - 'app/controllers/projects/ci/lints_controller.rb' - 'app/controllers/projects/ci/pipeline_editor_controller.rb' - 'app/controllers/projects/cluster_agents_controller.rb' - - 'app/controllers/projects/clusters/integrations_controller.rb' - 'app/controllers/projects/clusters_controller.rb' - 'app/controllers/projects/commit_controller.rb' - 'app/controllers/projects/commits_controller.rb' diff --git a/app/controllers/admin/clusters/integrations_controller.rb b/app/controllers/admin/clusters/integrations_controller.rb deleted file mode 100644 index d163ae7368d0ff9fc35a43bd0eee30015bb87edd..0000000000000000000000000000000000000000 --- a/app/controllers/admin/clusters/integrations_controller.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -class Admin::Clusters::IntegrationsController < Clusters::IntegrationsController - include EnforcesAdminAuthentication - - private - - def clusterable - @clusterable ||= InstanceClusterablePresenter.fabricate(Clusters::Instance.new, current_user: current_user) - end -end diff --git a/app/controllers/clusters/integrations_controller.rb b/app/controllers/clusters/integrations_controller.rb deleted file mode 100644 index 17884a55242049dbdd1701fd3526cdf6614b6f67..0000000000000000000000000000000000000000 --- a/app/controllers/clusters/integrations_controller.rb +++ /dev/null @@ -1,34 +0,0 @@ -# frozen_string_literal: true - -module Clusters - class IntegrationsController < ::Clusters::BaseController - before_action :cluster - before_action :authorize_admin_cluster!, only: [:create_or_update] - - def create_or_update - service_response = Clusters::Integrations::CreateService - .new(container: clusterable, cluster: cluster, current_user: current_user, params: cluster_integration_params) - .execute - - if service_response.success? - redirect_to cluster.show_path(params: { tab: 'integrations' }), notice: service_response.message - else - redirect_to cluster.show_path(params: { tab: 'integrations' }), alert: service_response.message - end - end - - private - - def clusterable - raise NotImplementedError - end - - def cluster_integration_params - params.permit(integration: [:enabled, :application_type]).require(:integration) - end - - def cluster - @cluster ||= clusterable.clusters.find(params[:cluster_id]).present(current_user: current_user) - end - end -end diff --git a/app/controllers/groups/clusters/integrations_controller.rb b/app/controllers/groups/clusters/integrations_controller.rb deleted file mode 100644 index 4ab8c021ee2b04b5f4b26e7b782547be87181ecd..0000000000000000000000000000000000000000 --- a/app/controllers/groups/clusters/integrations_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -class Groups::Clusters::IntegrationsController < Clusters::IntegrationsController - include ControllerWithCrossProjectAccessCheck - - prepend_before_action :group - requires_cross_project_access - - private - - def clusterable - @clusterable ||= ClusterablePresenter.fabricate(group, current_user: current_user) - end - - def group - @group ||= find_routable!(Group, params[:group_id] || params[:id], request.fullpath) - end -end diff --git a/app/controllers/projects/clusters/integrations_controller.rb b/app/controllers/projects/clusters/integrations_controller.rb deleted file mode 100644 index 77314d194691b896eb0fced2b3d68074cb33fea7..0000000000000000000000000000000000000000 --- a/app/controllers/projects/clusters/integrations_controller.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -class Projects::Clusters::IntegrationsController < ::Clusters::IntegrationsController - prepend_before_action :project - - private - - def clusterable - @clusterable ||= ClusterablePresenter.fabricate(project, current_user: current_user) - end - - def project - @project ||= find_routable!(Project, File.join(params[:namespace_id], params[:project_id]), request.fullpath) - end -end diff --git a/spec/requests/admin/clusters/integrations_controller_spec.rb b/spec/requests/admin/clusters/integrations_controller_spec.rb deleted file mode 100644 index d5e3f03627a8d722bf11aaf61406fa2a6aebb088..0000000000000000000000000000000000000000 --- a/spec/requests/admin/clusters/integrations_controller_spec.rb +++ /dev/null @@ -1,25 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Admin::Clusters::IntegrationsController, :enable_admin_mode, feature_category: :integrations do - include AccessMatchersForController - - shared_examples 'a secure endpoint' do - context 'it is allowed for admins only' do - it { expect { subject }.to be_allowed_for(:admin) } - it { expect { subject }.to be_denied_for(:user) } - it { expect { subject }.to be_denied_for(:external) } - end - end - - describe 'POST create_or_update' do - let(:cluster) { create(:cluster, :instance, :provided_by_gcp) } - let(:user) { create(:admin) } - - it_behaves_like '#create_or_update action' do - let(:path) { create_or_update_admin_cluster_integration_path(cluster) } - let(:redirect_path) { admin_cluster_path(cluster, params: { tab: 'integrations' }) } - end - end -end diff --git a/spec/requests/groups/clusters/integrations_controller_spec.rb b/spec/requests/groups/clusters/integrations_controller_spec.rb deleted file mode 100644 index 0b9148e917b0c15d3288ef7d2d2d77ce6ef8a4ee..0000000000000000000000000000000000000000 --- a/spec/requests/groups/clusters/integrations_controller_spec.rb +++ /dev/null @@ -1,40 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Groups::Clusters::IntegrationsController, features: :integrations do - include AccessMatchersForController - - shared_examples 'a secure endpoint' do - it 'is allowed for admin when admin mode enabled', :enable_admin_mode do - expect { subject }.to be_allowed_for(:admin) - end - - it 'is denied for admin when admin mode disabled' do - expect { subject }.to be_denied_for(:admin) - end - - context 'it is allowed for group maintainers' do - it { expect { subject }.to be_allowed_for(:owner).of(group) } - it { expect { subject }.to be_allowed_for(:maintainer).of(group) } - it { expect { subject }.to be_denied_for(:developer).of(group) } - it { expect { subject }.to be_denied_for(:reporter).of(group) } - it { expect { subject }.to be_denied_for(:guest).of(group) } - it { expect { subject }.to be_denied_for(:user) } - it { expect { subject }.to be_denied_for(:external) } - end - end - - describe 'POST create_or_update' do - let_it_be(:group) { create(:group) } - let_it_be(:user) { create(:user) } - let_it_be(:member) { create(:group_member, user: user, group: group) } - - let(:cluster) { create(:cluster, :group, :provided_by_gcp, groups: [group]) } - - it_behaves_like '#create_or_update action' do - let(:path) { create_or_update_group_cluster_integration_path(group, cluster) } - let(:redirect_path) { group_cluster_path(group, cluster, params: { tab: 'integrations' }) } - end - end -end diff --git a/spec/requests/projects/clusters/integrations_controller_spec.rb b/spec/requests/projects/clusters/integrations_controller_spec.rb deleted file mode 100644 index 505b63e1ff6ebc7aa447de5c68959f5eb2d84636..0000000000000000000000000000000000000000 --- a/spec/requests/projects/clusters/integrations_controller_spec.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -RSpec.describe Projects::Clusters::IntegrationsController, feature_category: :integrations do - include AccessMatchersForController - - shared_examples 'a secure endpoint' do - it 'is allowed for admin when admin mode enabled', :enable_admin_mode do - expect { subject }.to be_allowed_for(:admin) - end - - it 'is denied for admin when admin mode disabled' do - expect { subject }.to be_denied_for(:admin) - end - - context 'it is allowed for project maintainers' do - it { expect { subject }.to be_allowed_for(:owner).of(project) } - it { expect { subject }.to be_allowed_for(:maintainer).of(project) } - it { expect { subject }.to be_denied_for(:developer).of(project) } - it { expect { subject }.to be_denied_for(:reporter).of(project) } - it { expect { subject }.to be_denied_for(:guest).of(project) } - it { expect { subject }.to be_denied_for(:user) } - it { expect { subject }.to be_denied_for(:external) } - end - end - - describe 'POST create_or_update' do - let(:cluster) { create(:cluster, :project, :provided_by_gcp) } - let(:project) { cluster.project } - let(:user) { project.first_owner } - - it_behaves_like '#create_or_update action' do - let(:path) { create_or_update_project_cluster_integration_path(project, cluster) } - let(:redirect_path) { project_cluster_path(project, cluster, params: { tab: 'integrations' }) } - end - end -end diff --git a/spec/support/rspec_order_todo.yml b/spec/support/rspec_order_todo.yml index aad757ee47d3c412b50be1ea6caddee4669fe2fe..aefd9dccb3b84e03ecf49fda7c7df5d3606ad66d 100644 --- a/spec/support/rspec_order_todo.yml +++ b/spec/support/rspec_order_todo.yml @@ -7554,7 +7554,6 @@ - './spec/requests/admin/background_migrations_controller_spec.rb' - './spec/requests/admin/batched_jobs_controller_spec.rb' - './spec/requests/admin/broadcast_messages_controller_spec.rb' -- './spec/requests/admin/clusters/integrations_controller_spec.rb' - './spec/requests/admin/impersonation_tokens_controller_spec.rb' - './spec/requests/admin/integrations_controller_spec.rb' - './spec/requests/admin/version_check_controller_spec.rb' @@ -7975,7 +7974,6 @@ - './spec/requests/dashboard/projects_controller_spec.rb' - './spec/requests/git_http_spec.rb' - './spec/requests/groups/autocomplete_sources_spec.rb' -- './spec/requests/groups/clusters/integrations_controller_spec.rb' - './spec/requests/groups_controller_spec.rb' - './spec/requests/groups/crm/contacts_controller_spec.rb' - './spec/requests/groups/crm/organizations_controller_spec.rb' @@ -8009,7 +8007,6 @@ - './spec/requests/profiles/notifications_controller_spec.rb' - './spec/requests/projects/ci/promeheus_metrics/histograms_controller_spec.rb' - './spec/requests/projects/cluster_agents_controller_spec.rb' -- './spec/requests/projects/clusters/integrations_controller_spec.rb' - './spec/requests/projects/commits_controller_spec.rb' - './spec/requests/projects_controller_spec.rb' - './spec/requests/projects/cycle_analytics_events_spec.rb' diff --git a/spec/support/shared_examples/requests/clusters/integrations_controller_shared_examples.rb b/spec/support/shared_examples/requests/clusters/integrations_controller_shared_examples.rb deleted file mode 100644 index 91fdcbd9b1d8b5db7e631551206110bdb9545a8e..0000000000000000000000000000000000000000 --- a/spec/support/shared_examples/requests/clusters/integrations_controller_shared_examples.rb +++ /dev/null @@ -1,46 +0,0 @@ -# frozen_string_literal: true - -RSpec.shared_examples '#create_or_update action' do - let(:params) do - { integration: { application_type: 'prometheus', enabled: true } } - end - - let(:path) { raise NotImplementedError } - let(:redirect_path) { raise NotImplementedError } - - describe 'authorization' do - subject do - post path, params: params - end - - it_behaves_like 'a secure endpoint' - end - - describe 'functionality' do - before do - sign_in(user) - end - - it 'redirects on success' do - post path, params: params - - expect(response).to have_gitlab_http_status(:redirect) - expect(response).to redirect_to(redirect_path) - expect(flash[:notice]).to be_present - end - - it 'redirects on error' do - error = ServiceResponse.error(message: 'failed') - - expect_next_instance_of(Clusters::Integrations::CreateService) do |service| - expect(service).to receive(:execute).and_return(error) - end - - post path, params: params - - expect(response).to have_gitlab_http_status(:redirect) - expect(response).to redirect_to(redirect_path) - expect(flash[:alert]).to eq(error.message) - end - end -end diff --git a/spec/tooling/danger/project_helper_spec.rb b/spec/tooling/danger/project_helper_spec.rb index 1fbae423c52d33ef12ab4a01e6f752ff70ad5243..1d3b349ac5893ca800e1ebcad06ad5c6d6071e2f 100644 --- a/spec/tooling/danger/project_helper_spec.rb +++ b/spec/tooling/danger/project_helper_spec.rb @@ -216,7 +216,6 @@ 'app/serializers/jira_connect/app_data_serializer.rb' | [:import_integrate_be, :backend] 'lib/api/github/entities.rb' | [:import_integrate_be, :backend] 'lib/api/v3/github.rb' | [:import_integrate_be, :backend] - 'app/controllers/clusters/integrations_controller.rb' | [:backend] 'app/services/clusters/integrations/prometheus_health_check_service.rb' | [:backend] 'app/graphql/types/alert_management/integration_type.rb' | [:backend]