spec/features/projects/clusters_spec. Fix static analysys

This commit is contained in:
Shinya Maeda 2017-10-05 23:58:05 +09:00
parent fe135fac68
commit 44baf2b0f4
4 changed files with 114 additions and 3 deletions

View file

@ -4,7 +4,7 @@
.col-sm-8
= render 'header'
.row
.col-sm-8.col-sm-offset-4
.col-sm-8.col-sm-offset-4.signin-with-google
- if @authorize_url
= link_to @authorize_url do
= image_tag('auth_buttons/signin_with_google.png')

View file

@ -54,7 +54,7 @@
%label{ for: 'cluter_name' }
= s_('ClusterIntegration|Cluster name')
.input-group
%input.form-control{ value: @cluster.gcp_cluster_name, disabled: true}
%input.form-control.cluster-name{ value: @cluster.gcp_cluster_name, disabled: true}
%span.input-group-addon.clipboard-addon
= clipboard_button(text: @cluster.gcp_cluster_name, title: s_('ClusterIntegration|Copy cluster name'))

View file

@ -4,7 +4,7 @@ describe GoogleApi::AuthorizationsController do
describe 'GET|POST #callback' do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:state) { namespace_project_clusters_url(project.namespace, project).to_s }
let(:state) { project_clusters_url(project).to_s }
let(:token) { 'token' }
let(:expires_at) { 1.hour.since.strftime('%s') }

View file

@ -0,0 +1,111 @@
require 'spec_helper'
feature 'Clusters', :js do
let!(:project) { create(:project, :repository) }
let!(:user) { create(:user) }
before do
project.add_master(user)
gitlab_sign_in(user)
end
context 'when user has signed in Google' do
before do
allow_any_instance_of(GoogleApi::CloudPlatform::Client)
.to receive(:validate_token).and_return(true)
end
context 'when user does not have a cluster and visits cluster index page' do
before do
visit project_clusters_path(project)
end
it 'user sees a new page' do
expect(page).to have_button('Create cluster')
end
context 'when user filled form with valid parameters' do
before do
double.tap do |dbl|
allow(dbl).to receive(:status).and_return('RUNNING')
allow(dbl).to receive(:self_link)
.and_return('projects/gcp-project-12345/zones/us-central1-a/operations/ope-123')
allow_any_instance_of(GoogleApi::CloudPlatform::Client)
.to receive(:projects_zones_clusters_create).and_return(dbl)
end
allow(WaitForClusterCreationWorker).to receive(:perform_in).and_return(nil)
fill_in 'cluster_gcp_project_id', with: 'gcp-project-123'
fill_in 'cluster_gcp_cluster_name', with: 'dev-cluster'
click_button 'Create cluster'
end
it 'user sees a cluster details page and creation status' do
expect(page).to have_content('Cluster is being created on Google Container Engine...')
Gcp::Cluster.last.make_created!
expect(page).to have_content('Cluster was successfully created on Google Container Engine.')
end
end
context 'when user filled form with invalid parameters' do
before do
click_button 'Create cluster'
end
it 'user sees a validation error' do
expect(page).to have_css('#error_explanation')
end
end
end
context 'when user has a cluster and visits cluster index page' do
let!(:cluster) { create(:gcp_cluster, :created_on_gke, :with_kubernetes_service, project: project) }
before do
visit project_clusters_path(project)
end
it 'user sees an cluster details page' do
expect(page).to have_button('Save changes')
expect(page.find(:css, '.cluster-name').value).to eq(cluster.gcp_cluster_name)
end
context 'when user disables the cluster' do
before do
page.find(:css, '.js-toggle-cluster').click
click_button 'Save changes'
end
it 'user sees the succeccful message' do
expect(page).to have_content('Cluster was successfully updated.')
end
end
context 'when user destory the cluster' do
before do
page.accept_confirm do
click_link 'Remove integration'
end
end
it 'user sees creation form with the succeccful message' do
expect(page).to have_content('Cluster was successfully removed.')
expect(page).to have_button('Create cluster')
end
end
end
end
context 'when user has not signed in Google' do
before do
visit project_clusters_path(project)
end
it 'user sees a login page' do
expect(page).to have_css('.signin-with-google')
end
end
end