Commit eb55592a authored by Kamil Trzciński's avatar Kamil Trzciński

Merge branch 'ce-5968-extract-ee-specific-files-lines-for-clusters-related-files' into 'master'

Backport Cluster related EE code

See merge request gitlab-org/gitlab-ce!18931
parents 099dfbdb f96552c7
...@@ -4,8 +4,8 @@ FactoryBot.define do ...@@ -4,8 +4,8 @@ FactoryBot.define do
name 'test-cluster' name 'test-cluster'
trait :project do trait :project do
after(:create) do |cluster, evaluator| before(:create) do |cluster, evaluator|
cluster.projects << create(:project) cluster.projects << create(:project, :repository)
end end
end end
......
...@@ -182,6 +182,7 @@ feature 'Gcp Cluster', :js do ...@@ -182,6 +182,7 @@ feature 'Gcp Cluster', :js do
it 'user sees a login page' do it 'user sees a login page' do
expect(page).to have_css('.signin-with-google') expect(page).to have_css('.signin-with-google')
expect(page).to have_link('Google account')
end end
end end
......
...@@ -8,80 +8,22 @@ describe Clusters::CreateService do ...@@ -8,80 +8,22 @@ describe Clusters::CreateService do
subject { described_class.new(project, user, params).execute(access_token) } subject { described_class.new(project, user, params).execute(access_token) }
context 'when provider is gcp' do context 'when provider is gcp' do
shared_context 'valid params' do
let(:params) do
{
name: 'test-cluster',
provider_type: :gcp,
provider_gcp_attributes: {
gcp_project_id: 'gcp-project',
zone: 'us-central1-a',
num_nodes: 1,
machine_type: 'machine_type-a'
}
}
end
end
shared_context 'invalid params' do
let(:params) do
{
name: 'test-cluster',
provider_type: :gcp,
provider_gcp_attributes: {
gcp_project_id: '!!!!!!!',
zone: 'us-central1-a',
num_nodes: 1,
machine_type: 'machine_type-a'
}
}
end
end
shared_examples 'create cluster' do
it 'creates a cluster object and performs a worker' do
expect(ClusterProvisionWorker).to receive(:perform_async)
expect { subject }
.to change { Clusters::Cluster.count }.by(1)
.and change { Clusters::Providers::Gcp.count }.by(1)
expect(subject.name).to eq('test-cluster')
expect(subject.user).to eq(user)
expect(subject.project).to eq(project)
expect(subject.provider.gcp_project_id).to eq('gcp-project')
expect(subject.provider.zone).to eq('us-central1-a')
expect(subject.provider.num_nodes).to eq(1)
expect(subject.provider.machine_type).to eq('machine_type-a')
expect(subject.provider.access_token).to eq(access_token)
expect(subject.platform).to be_nil
end
end
shared_examples 'error' do
it 'returns an error' do
expect(ClusterProvisionWorker).not_to receive(:perform_async)
expect { subject }.to change { Clusters::Cluster.count }.by(0)
expect(subject.errors[:"provider_gcp.gcp_project_id"]).to be_present
end
end
context 'when project has no clusters' do context 'when project has no clusters' do
context 'when correct params' do context 'when correct params' do
include_context 'valid params' include_context 'valid cluster create params'
include_examples 'create cluster' include_examples 'create cluster service success'
end end
context 'when invalid params' do context 'when invalid params' do
include_context 'invalid params' include_context 'invalid cluster create params'
include_examples 'error' include_examples 'create cluster service error'
end end
end end
context 'when project has a cluster' do context 'when project has a cluster' do
include_context 'valid params' include_context 'valid cluster create params'
let!(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) } let!(:cluster) { create(:cluster, :provided_by_gcp, :production_environment, projects: [project]) }
it 'does not create a cluster' do it 'does not create a cluster' do
......
shared_context 'valid cluster create params' do
let(:params) do
{
name: 'test-cluster',
provider_type: :gcp,
provider_gcp_attributes: {
gcp_project_id: 'gcp-project',
zone: 'us-central1-a',
num_nodes: 1,
machine_type: 'machine_type-a'
}
}
end
end
shared_context 'invalid cluster create params' do
let(:params) do
{
name: 'test-cluster',
provider_type: :gcp,
provider_gcp_attributes: {
gcp_project_id: '!!!!!!!',
zone: 'us-central1-a',
num_nodes: 1,
machine_type: 'machine_type-a'
}
}
end
end
shared_examples 'create cluster service success' do
it 'creates a cluster object and performs a worker' do
expect(ClusterProvisionWorker).to receive(:perform_async)
expect { subject }
.to change { Clusters::Cluster.count }.by(1)
.and change { Clusters::Providers::Gcp.count }.by(1)
expect(subject.name).to eq('test-cluster')
expect(subject.user).to eq(user)
expect(subject.project).to eq(project)
expect(subject.provider.gcp_project_id).to eq('gcp-project')
expect(subject.provider.zone).to eq('us-central1-a')
expect(subject.provider.num_nodes).to eq(1)
expect(subject.provider.machine_type).to eq('machine_type-a')
expect(subject.provider.access_token).to eq(access_token)
expect(subject.platform).to be_nil
end
end
shared_examples 'create cluster service error' do
it 'returns an error' do
expect(ClusterProvisionWorker).not_to receive(:perform_async)
expect { subject }.to change { Clusters::Cluster.count }.by(0)
expect(subject.errors[:"provider_gcp.gcp_project_id"]).to be_present
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment