Add test suit for platform::kubernetes
This commit is contained in:
parent
a8e2094c65
commit
45f2d0af41
|
@ -914,13 +914,6 @@ class Project < ActiveRecord::Base
|
||||||
deployment_platform
|
deployment_platform
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: This will be extended for multiple enviroment clusters
|
|
||||||
# TODO: Add super nice tests to check this interchangeability
|
|
||||||
def deployment_platform
|
|
||||||
@deployment_platform ||= clusters.where(enabled: true).first&.platform_kubernetes
|
|
||||||
@deployment_platform ||= deployment_services.reorder(nil).find_by(active: true)
|
|
||||||
end
|
|
||||||
|
|
||||||
def monitoring_services
|
def monitoring_services
|
||||||
services.where(category: :monitoring)
|
services.where(category: :monitoring)
|
||||||
end
|
end
|
||||||
|
@ -1858,4 +1851,11 @@ class Project < ActiveRecord::Base
|
||||||
|
|
||||||
raise ex
|
raise ex
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: This will be extended for multiple enviroment clusters
|
||||||
|
# TODO: Add super nice tests to check this interchangeability
|
||||||
|
def deployment_platform
|
||||||
|
@deployment_platform ||= clusters.where(enabled: true).first&.platform_kubernetes
|
||||||
|
@deployment_platform ||= deployment_services.reorder(nil).find_by(active: true)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -130,6 +130,24 @@ describe Projects::BranchesController do
|
||||||
expect(response.location).to include(project_new_blob_path(project, branch))
|
expect(response.location).to include(project_new_blob_path(project, branch))
|
||||||
expect(response).to have_gitlab_http_status(302)
|
expect(response).to have_gitlab_http_status(302)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'redirects to autodeploy setup page' do
|
||||||
|
result = { status: :success, branch: double(name: branch) }
|
||||||
|
|
||||||
|
create(:cluster, :provided_by_gcp, projects: [project])
|
||||||
|
|
||||||
|
expect_any_instance_of(CreateBranchService).to receive(:execute).and_return(result)
|
||||||
|
expect(SystemNoteService).to receive(:new_issue_branch).and_return(true)
|
||||||
|
|
||||||
|
post :create,
|
||||||
|
namespace_id: project.namespace.to_param,
|
||||||
|
project_id: project.to_param,
|
||||||
|
branch_name: branch,
|
||||||
|
issue_iid: issue.iid
|
||||||
|
|
||||||
|
expect(response.location).to include(project_new_blob_path(project, branch))
|
||||||
|
expect(response).to have_gitlab_http_status(302)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'without issue feature access' do
|
context 'without issue feature access' do
|
||||||
|
|
|
@ -4,6 +4,7 @@ describe 'Auto deploy' do
|
||||||
let(:user) { create(:user) }
|
let(:user) { create(:user) }
|
||||||
let(:project) { create(:project, :repository) }
|
let(:project) { create(:project, :repository) }
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
before do
|
before do
|
||||||
create :kubernetes_service, project: project
|
create :kubernetes_service, project: project
|
||||||
project.team << [user, :master]
|
project.team << [user, :master]
|
||||||
|
@ -53,3 +54,55 @@ describe 'Auto deploy' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
before do
|
||||||
|
create(:cluster, :provided_by_gcp, projects: [project])
|
||||||
|
project.team << [user, :master]
|
||||||
|
sign_in user
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when no deployment service is active' do
|
||||||
|
before do
|
||||||
|
project.kubernetes_service.update!(active: false)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not show a button to set up auto deploy' do
|
||||||
|
visit project_path(project)
|
||||||
|
expect(page).to have_no_content('Set up auto deploy')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a deployment service is active' do
|
||||||
|
before do
|
||||||
|
project.kubernetes_service.update!(active: true)
|
||||||
|
visit project_path(project)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'shows a button to set up auto deploy' do
|
||||||
|
expect(page).to have_link('Set up auto deploy')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'includes OpenShift as an available template', :js do
|
||||||
|
click_link 'Set up auto deploy'
|
||||||
|
click_button 'Apply a GitLab CI Yaml template'
|
||||||
|
|
||||||
|
within '.gitlab-ci-yml-selector' do
|
||||||
|
expect(page).to have_content('OpenShift')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'creates a merge request using "auto-deploy" branch', :js do
|
||||||
|
click_link 'Set up auto deploy'
|
||||||
|
click_button 'Apply a GitLab CI Yaml template'
|
||||||
|
within '.gitlab-ci-yml-selector' do
|
||||||
|
click_on 'OpenShift'
|
||||||
|
end
|
||||||
|
wait_for_requests
|
||||||
|
click_button 'Commit changes'
|
||||||
|
|
||||||
|
expect(page).to have_content('New Merge Request From auto-deploy into master')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -101,8 +101,7 @@ feature 'Environment' do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with terminal' do
|
context 'with terminal' do
|
||||||
let(:project) { create(:kubernetes_project, :test_repo) }
|
shared_examples 'correct behavior with terminal' do
|
||||||
|
|
||||||
context 'for project master' do
|
context 'for project master' do
|
||||||
let(:role) { :master }
|
let(:role) { :master }
|
||||||
|
|
||||||
|
@ -133,6 +132,20 @@ feature 'Environment' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
|
let(:project) { create(:kubernetes_project, :test_repo) }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with terminal'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
|
||||||
|
let(:project) { cluster.project }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with terminal'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when environment is available' do
|
context 'when environment is available' do
|
||||||
context 'with stop action' do
|
context 'with stop action' do
|
||||||
given(:action) do
|
given(:action) do
|
||||||
|
|
|
@ -208,8 +208,7 @@ feature 'Environments page', :js do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when kubernetes terminal is available' do
|
context 'when kubernetes terminal is available' do
|
||||||
let(:project) { create(:kubernetes_project, :test_repo) }
|
shared_examples 'correct behavior with terminal' do
|
||||||
|
|
||||||
context 'for project master' do
|
context 'for project master' do
|
||||||
let(:role) { :master }
|
let(:role) { :master }
|
||||||
|
|
||||||
|
@ -226,6 +225,20 @@ feature 'Environments page', :js do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
|
let(:project) { create(:kubernetes_project, :test_repo) }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with terminal'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
|
||||||
|
let(:project) { cluster.project }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with terminal'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,14 +4,27 @@ describe Gitlab::Ci::Build::Policy::Kubernetes do
|
||||||
let(:pipeline) { create(:ci_pipeline, project: project) }
|
let(:pipeline) { create(:ci_pipeline, project: project) }
|
||||||
|
|
||||||
context 'when kubernetes service is active' do
|
context 'when kubernetes service is active' do
|
||||||
set(:project) { create(:kubernetes_project) }
|
shared_examples 'correct behavior for satisfied_by?' do
|
||||||
|
|
||||||
it 'is satisfied by a kubernetes pipeline' do
|
it 'is satisfied by a kubernetes pipeline' do
|
||||||
expect(described_class.new('active'))
|
expect(described_class.new('active'))
|
||||||
.to be_satisfied_by(pipeline)
|
.to be_satisfied_by(pipeline)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
|
let(:project) { create(:kubernetes_project) }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior for satisfied_by?'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
|
||||||
|
let(:project) { cluster.project }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior for satisfied_by?'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when kubernetes service is inactive' do
|
context 'when kubernetes service is inactive' do
|
||||||
set(:project) { create(:project) }
|
set(:project) { create(:project) }
|
||||||
|
|
||||||
|
|
|
@ -2002,14 +2002,27 @@ describe Project do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when project has a deployment service' do
|
context 'when project has a deployment service' do
|
||||||
let(:project) { create(:kubernetes_project) }
|
shared_examples 'correct behavior with variables' do
|
||||||
|
|
||||||
it 'returns variables from this service' do
|
it 'returns variables from this service' do
|
||||||
expect(project.deployment_variables).to include(
|
expect(project.deployment_variables).to include(
|
||||||
{ key: 'KUBE_TOKEN', value: project.kubernetes_service.token, public: false }
|
{ key: 'KUBE_TOKEN', value: project.kubernetes_service.token, public: false }
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
|
let(:project) { create(:kubernetes_project) }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with variables'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
|
||||||
|
let(:project) { cluster.project }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with variables'
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#secret_variables_for' do
|
describe '#secret_variables_for' do
|
||||||
|
|
|
@ -41,7 +41,7 @@ RSpec.shared_examples 'additional metrics query' do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'project has Kubernetes service' do
|
describe 'project has Kubernetes service' do
|
||||||
let(:project) { create(:kubernetes_project) }
|
shared_examples 'correct behavior with metrics' do
|
||||||
let(:environment) { create(:environment, slug: 'environment-slug', project: project) }
|
let(:environment) { create(:environment, slug: 'environment-slug', project: project) }
|
||||||
let(:kube_namespace) { project.kubernetes_service.actual_namespace }
|
let(:kube_namespace) { project.kubernetes_service.actual_namespace }
|
||||||
|
|
||||||
|
@ -54,6 +54,20 @@ RSpec.shared_examples 'additional metrics query' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from Integration > Kubernetes' do
|
||||||
|
let(:project) { create(:kubernetes_project) }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with metrics'
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when user configured kubernetes from CI/CD > Clusters' do
|
||||||
|
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
|
||||||
|
let(:project) { cluster.project }
|
||||||
|
|
||||||
|
it_behaves_like 'correct behavior with metrics'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'project without Kubernetes service' do
|
describe 'project without Kubernetes service' do
|
||||||
it_behaves_like 'query context containing environment slug and filter'
|
it_behaves_like 'query context containing environment slug and filter'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue