summaryrefslogtreecommitdiff
path: root/spec/controllers
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2017-12-16 04:11:44 +0100
committerMatija Čupić <matteeyah@gmail.com>2017-12-16 04:11:44 +0100
commit78f85f3fd3a6743948f044c332cd1243547ef0a4 (patch)
tree08a91bd00cc98d0e8d0881fa2561d344c8cf1e35 /spec/controllers
parent1de0261d5ec9385405291426f56b190148707700 (diff)
downloadgitlab-ce-78f85f3fd3a6743948f044c332cd1243547ef0a4.tar.gz
Add check step for creating GCP clusters
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/projects/clusters/gcp_controller_spec.rb71
1 files changed, 70 insertions, 1 deletions
diff --git a/spec/controllers/projects/clusters/gcp_controller_spec.rb b/spec/controllers/projects/clusters/gcp_controller_spec.rb
index ee7928beb7e..be4b8c1f8dc 100644
--- a/spec/controllers/projects/clusters/gcp_controller_spec.rb
+++ b/spec/controllers/projects/clusters/gcp_controller_spec.rb
@@ -30,7 +30,7 @@ describe Projects::Clusters::GcpController do
go
expect(assigns(:authorize_url)).to include(key)
- expect(session[session_key_for_redirect_uri]).to eq(gcp_new_project_clusters_path(project))
+ expect(session[session_key_for_redirect_uri]).to eq(gcp_check_project_clusters_path(project))
end
end
@@ -63,6 +63,75 @@ describe Projects::Clusters::GcpController do
end
end
+ describe 'GET check' do
+ let(:user) { create(:user) }
+
+ before do
+ project.add_master(user)
+ sign_in(user)
+ end
+
+ describe 'functionality' do
+ context 'when redis has wanted billing status' do
+ let(:token) { 'bogustoken' }
+ before do
+ redis_double = double
+ allow(Gitlab::Redis::SharedState).to receive(:with).and_yield(redis_double)
+ allow(redis_double).to receive(:get).and_return('true')
+ end
+
+ it 'should render json with billing status' do
+ go
+
+ expect(response).to have_http_status(:ok)
+ expect(response.body).to include_json(billing: 'true')
+ end
+
+ it 'should not start worker' do
+ expect(CheckGcpProjectBillingWorker).not_to receive(:perform_async)
+
+ go
+ end
+ end
+
+ context 'when redis does not have billing status' do
+ before do
+ redis_double = double
+ allow(Gitlab::Redis::SharedState).to receive(:with).and_yield(redis_double)
+ allow(redis_double).to receive(:get).and_return(nil)
+ end
+
+ it 'should render json with null billing status' do
+ go
+
+ expect(response).to have_http_status(:ok)
+ expect(response.body).to include_json(billing: nil)
+ end
+
+ it 'should start worker' do
+ expect(CheckGcpProjectBillingWorker).to receive(:perform_async)
+
+ go
+ end
+ end
+ end
+
+ describe 'security' do
+ it { expect { go }.to be_allowed_for(:admin) }
+ it { expect { go }.to be_allowed_for(:owner).of(project) }
+ it { expect { go }.to be_allowed_for(:master).of(project) }
+ it { expect { go }.to be_denied_for(:developer).of(project) }
+ it { expect { go }.to be_denied_for(:reporter).of(project) }
+ it { expect { go }.to be_denied_for(:guest).of(project) }
+ it { expect { go }.to be_denied_for(:user) }
+ it { expect { go }.to be_denied_for(:external) }
+ end
+
+ def go
+ get :check, namespace_id: project.namespace, project_id: project, format: :json
+ end
+ end
+
describe 'GET new' do
describe 'functionality' do
let(:user) { create(:user) }