diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-02-18 09:45:46 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-02-18 09:45:46 +0000 |
commit | a7b3560714b4d9cc4ab32dffcd1f74a284b93580 (patch) | |
tree | 7452bd5c3545c2fa67a28aa013835fb4fa071baf /spec/requests/projects | |
parent | ee9173579ae56a3dbfe5afe9f9410c65bb327ca7 (diff) | |
download | gitlab-ce-a7b3560714b4d9cc4ab32dffcd1f74a284b93580.tar.gz |
Add latest changes from gitlab-org/gitlab@14-8-stable-eev14.8.0-rc42
Diffstat (limited to 'spec/requests/projects')
9 files changed, 63 insertions, 20 deletions
diff --git a/spec/requests/projects/cluster_agents_controller_spec.rb b/spec/requests/projects/cluster_agents_controller_spec.rb index e4c4f537699..914d5b17ba8 100644 --- a/spec/requests/projects/cluster_agents_controller_spec.rb +++ b/spec/requests/projects/cluster_agents_controller_spec.rb @@ -14,7 +14,7 @@ RSpec.describe Projects::ClusterAgentsController do let_it_be(:user) { create(:user) } before do - project.add_developer(user) + project.add_reporter(user) sign_in(user) subject end diff --git a/spec/requests/projects/clusters/integrations_controller_spec.rb b/spec/requests/projects/clusters/integrations_controller_spec.rb index 323c61b9af3..c05e3da675c 100644 --- a/spec/requests/projects/clusters/integrations_controller_spec.rb +++ b/spec/requests/projects/clusters/integrations_controller_spec.rb @@ -28,7 +28,7 @@ RSpec.describe Projects::Clusters::IntegrationsController do describe 'POST create_or_update' do let(:cluster) { create(:cluster, :project, :provided_by_gcp) } let(:project) { cluster.project } - let(:user) { project.owner } + let(:user) { project.first_owner } it_behaves_like '#create_or_update action' do let(:path) { create_or_update_project_cluster_integration_path(project, cluster) } diff --git a/spec/requests/projects/google_cloud/deployments_controller_spec.rb b/spec/requests/projects/google_cloud/deployments_controller_spec.rb index a5eccc43147..fd356bc61c7 100644 --- a/spec/requests/projects/google_cloud/deployments_controller_spec.rb +++ b/spec/requests/projects/google_cloud/deployments_controller_spec.rb @@ -3,7 +3,8 @@ require 'spec_helper' RSpec.describe Projects::GoogleCloud::DeploymentsController do - let_it_be(:project) { create(:project, :public) } + let_it_be(:project) { create(:project, :public, :repository) } + let_it_be(:repository) { project.repository } let_it_be(:user_guest) { create(:user) } let_it_be(:user_developer) { create(:user) } @@ -36,8 +37,6 @@ RSpec.describe Projects::GoogleCloud::DeploymentsController do it 'returns not found on GET request' do urls_list.each do |url| unauthorized_members.each do |unauthorized_member| - sign_in(unauthorized_member) - get url expect(response).to have_gitlab_http_status(:not_found) @@ -65,18 +64,63 @@ RSpec.describe Projects::GoogleCloud::DeploymentsController do let_it_be(:url) { "#{project_google_cloud_deployments_cloud_run_path(project)}" } before do + sign_in(user_maintainer) + allow_next_instance_of(GoogleApi::CloudPlatform::Client) do |client| allow(client).to receive(:validate_token).and_return(true) end end - it 'renders placeholder' do - authorized_members.each do |authorized_member| - sign_in(authorized_member) + it 'redirects to google_cloud home on enable service error' do + # since GPC_PROJECT_ID is not set, enable cloud run service should return an error + + get url + + expect(response).to redirect_to(project_google_cloud_index_path(project)) + end + + it 'tracks error and redirects to gcp_error' do + mock_google_error = Google::Apis::ClientError.new('some_error') + + allow_next_instance_of(GoogleCloud::EnableCloudRunService) do |service| + allow(service).to receive(:execute).and_raise(mock_google_error) + end + + expect(Gitlab::ErrorTracking).to receive(:track_exception).with(mock_google_error, { project_id: project.id }) + + get url + + expect(response).to render_template(:gcp_error) + end + + context 'GCP_PROJECT_IDs are defined' do + it 'redirects to google_cloud home on generate pipeline error' do + allow_next_instance_of(GoogleCloud::EnableCloudRunService) do |enable_cloud_run_service| + allow(enable_cloud_run_service).to receive(:execute).and_return({ status: :success }) + end + + allow_next_instance_of(GoogleCloud::GeneratePipelineService) do |generate_pipeline_service| + allow(generate_pipeline_service).to receive(:execute).and_return({ status: :error }) + end get url - expect(response).to have_gitlab_http_status(:ok) + expect(response).to redirect_to(project_google_cloud_index_path(project)) + end + + it 'redirects to create merge request form' do + allow_next_instance_of(GoogleCloud::EnableCloudRunService) do |service| + allow(service).to receive(:execute).and_return({ status: :success }) + end + + allow_next_instance_of(GoogleCloud::GeneratePipelineService) do |service| + allow(service).to receive(:execute).and_return({ status: :success }) + end + + get url + + expect(response).to have_gitlab_http_status(:found) + expect(response.location).to include(project_new_merge_request_path(project)) end end end diff --git a/spec/requests/projects/google_cloud/service_accounts_controller_spec.rb b/spec/requests/projects/google_cloud/service_accounts_controller_spec.rb index 6b4d1c490e2..0f243a6a7a9 100644 --- a/spec/requests/projects/google_cloud/service_accounts_controller_spec.rb +++ b/spec/requests/projects/google_cloud/service_accounts_controller_spec.rb @@ -2,10 +2,6 @@ require 'spec_helper' -# Mock Types -MockGoogleOAuth2Credentials = Struct.new(:app_id, :app_secret) -MockServiceAccount = Struct.new(:project_id, :unique_id) - RSpec.describe Projects::GoogleCloud::ServiceAccountsController do let_it_be(:project) { create(:project, :public) } @@ -86,10 +82,12 @@ RSpec.describe Projects::GoogleCloud::ServiceAccountsController do context 'and user has successfully completed the google oauth2 flow' do before do allow_next_instance_of(GoogleApi::CloudPlatform::Client) do |client| + mock_service_account = Struct.new(:project_id, :unique_id, :email).new(123, 456, 'em@ai.l') allow(client).to receive(:validate_token).and_return(true) allow(client).to receive(:list_projects).and_return([{}, {}, {}]) - allow(client).to receive(:create_service_account).and_return(MockServiceAccount.new(123, 456)) + allow(client).to receive(:create_service_account).and_return(mock_service_account) allow(client).to receive(:create_service_account_key).and_return({}) + allow(client).to receive(:grant_service_account_roles) end end @@ -147,7 +145,8 @@ RSpec.describe Projects::GoogleCloud::ServiceAccountsController do context 'but gitlab instance is not configured for google oauth2' do before do - unconfigured_google_oauth2 = MockGoogleOAuth2Credentials.new('', '') + unconfigured_google_oauth2 = Struct.new(:app_id, :app_secret) + .new('', '') allow(Gitlab::Auth::OAuth::Provider).to receive(:config_for) .with('google_oauth2') .and_return(unconfigured_google_oauth2) diff --git a/spec/requests/projects/merge_requests/creations_spec.rb b/spec/requests/projects/merge_requests/creations_spec.rb index 0a3e663444f..842ad01656e 100644 --- a/spec/requests/projects/merge_requests/creations_spec.rb +++ b/spec/requests/projects/merge_requests/creations_spec.rb @@ -7,7 +7,7 @@ RSpec.describe 'merge requests creations' do include ProjectForksHelper let(:project) { create(:project, :repository) } - let(:user) { project.owner } + let(:user) { project.first_owner } before do login_as(user) diff --git a/spec/requests/projects/merge_requests_discussions_spec.rb b/spec/requests/projects/merge_requests_discussions_spec.rb index 6cf7bfb1795..c761af86c16 100644 --- a/spec/requests/projects/merge_requests_discussions_spec.rb +++ b/spec/requests/projects/merge_requests_discussions_spec.rb @@ -6,7 +6,7 @@ RSpec.describe 'merge requests discussions' do # Further tests can be found at merge_requests_controller_spec.rb describe 'GET /:namespace/:project/-/merge_requests/:iid/discussions' do let(:project) { create(:project, :repository, :public) } - let(:owner) { project.owner } + let(:owner) { project.first_owner } let(:user) { create(:user) } let(:merge_request) { create(:merge_request_with_diffs, target_project: project, source_project: project) } diff --git a/spec/requests/projects/merge_requests_spec.rb b/spec/requests/projects/merge_requests_spec.rb index 59fde803560..91153554e55 100644 --- a/spec/requests/projects/merge_requests_spec.rb +++ b/spec/requests/projects/merge_requests_spec.rb @@ -12,7 +12,7 @@ RSpec.describe 'merge requests actions' do reviewers: [user2]) end - let(:user) { project.owner } + let(:user) { project.first_owner } let(:user2) { create(:user) } before do diff --git a/spec/requests/projects/metrics_dashboard_spec.rb b/spec/requests/projects/metrics_dashboard_spec.rb index c248463faa3..61bfe1c6edf 100644 --- a/spec/requests/projects/metrics_dashboard_spec.rb +++ b/spec/requests/projects/metrics_dashboard_spec.rb @@ -6,7 +6,7 @@ RSpec.describe 'Projects::MetricsDashboardController' do let_it_be(:project) { create(:project) } let_it_be(:environment) { create(:environment, project: project) } let_it_be(:environment2) { create(:environment, project: project) } - let_it_be(:user) { project.owner } + let_it_be(:user) { project.first_owner } before do project.add_developer(user) diff --git a/spec/requests/projects/noteable_notes_spec.rb b/spec/requests/projects/noteable_notes_spec.rb index 2bf1ffb2edc..44ee50ca002 100644 --- a/spec/requests/projects/noteable_notes_spec.rb +++ b/spec/requests/projects/noteable_notes_spec.rb @@ -9,7 +9,7 @@ RSpec.describe 'Project noteable notes' do let(:etag_store) { Gitlab::EtagCaching::Store.new } let(:notes_path) { project_noteable_notes_path(project, target_type: merge_request.class.name.underscore, target_id: merge_request.id) } let(:project) { merge_request.project } - let(:user) { project.owner } + let(:user) { project.first_owner } let(:response_etag) { response.headers['ETag'] } let(:stored_etag) { "W/\"#{etag_store.get(notes_path)}\"" } |