Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/requests/projects/google_cloud_controller_spec.rb')
-rw-r--r--spec/requests/projects/google_cloud_controller_spec.rb94
1 files changed, 76 insertions, 18 deletions
diff --git a/spec/requests/projects/google_cloud_controller_spec.rb b/spec/requests/projects/google_cloud_controller_spec.rb
index 3b43f0d1dfb..37682152994 100644
--- a/spec/requests/projects/google_cloud_controller_spec.rb
+++ b/spec/requests/projects/google_cloud_controller_spec.rb
@@ -2,48 +2,106 @@
require 'spec_helper'
+# Mock Types
+MockGoogleOAuth2Credentials = Struct.new(:app_id, :app_secret)
+
RSpec.describe Projects::GoogleCloudController do
let_it_be(:project) { create(:project, :public) }
describe 'GET index' do
let_it_be(:url) { "#{project_google_cloud_index_path(project)}" }
- let(:subject) { get url }
+ context 'when a public request is made' do
+ it 'returns not found' do
+ get url
- context 'when user is authorized' do
- let(:user) { project.creator }
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
- before do
+ context 'when a project.guest makes request' do
+ let(:user) { create(:user) }
+
+ it 'returns not found' do
+ project.add_guest(user)
sign_in(user)
- subject
+
+ get url
+
+ expect(response).to have_gitlab_http_status(:not_found)
end
+ end
- it 'renders content' do
- expect(response).to be_successful
+ context 'when project.developer makes request' do
+ let(:user) { create(:user) }
+
+ it 'returns not found' do
+ project.add_developer(user)
+ sign_in(user)
+
+ get url
+
+ expect(response).to have_gitlab_http_status(:not_found)
end
end
- context 'when user is unauthorized' do
+ context 'when project.maintainer makes request' do
let(:user) { create(:user) }
- before do
- project.add_guest(user)
+ it 'returns successful' do
+ project.add_maintainer(user)
sign_in(user)
- subject
+
+ get url
+
+ expect(response).to be_successful
end
+ end
- it 'shows 404' do
- expect(response).to have_gitlab_http_status(:not_found)
+ context 'when project.creator makes request' do
+ let(:user) { project.creator }
+
+ it 'returns successful' do
+ sign_in(user)
+
+ get url
+
+ expect(response).to be_successful
end
end
- context 'when no user is present' do
- before do
- subject
+ describe 'when authorized user makes request' do
+ let(:user) { project.creator }
+
+ context 'but gitlab instance is not configured for google oauth2' do
+ before do
+ unconfigured_google_oauth2 = MockGoogleOAuth2Credentials.new('', '')
+ allow(Gitlab::Auth::OAuth::Provider).to receive(:config_for)
+ .with('google_oauth2')
+ .and_return(unconfigured_google_oauth2)
+ end
+
+ it 'returns forbidden' do
+ sign_in(user)
+
+ get url
+
+ expect(response).to have_gitlab_http_status(:forbidden)
+ end
end
- it 'shows 404' do
- expect(response).to have_gitlab_http_status(:not_found)
+ context 'but feature flag is disabled' do
+ before do
+ stub_feature_flags(incubation_5mp_google_cloud: false)
+ end
+
+ it 'returns not found' do
+ sign_in(user)
+
+ get url
+
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
end
end
end