diff options
author | Mayra Cabrera <mcabrera@gitlab.com> | 2018-11-05 19:05:10 +0100 |
---|---|---|
committer | Thong Kuah <tkuah@gitlab.com> | 2018-11-08 23:26:04 +1300 |
commit | 675bfd50a9483bfefea6a374c9d9024331a5c970 (patch) | |
tree | 27a0cae052b2f3de1dc461cf1f04d5ac717ac87b | |
parent | a90320f792f9faefa3d5198e17b94f3acec7c6a5 (diff) | |
download | gitlab-ce-675bfd50a9483bfefea6a374c9d9024331a5c970.tar.gz |
Adds feature flag for Group Clusters
As the frontend is still in progress and other related backend is still
in prgress we need a feature flag to turn off Group Clusters.
-rw-r--r-- | app/controllers/groups/clusters_controller.rb | 5 | ||||
-rw-r--r-- | app/helpers/groups_helper.rb | 2 | ||||
-rw-r--r-- | spec/controllers/groups/clusters_controller_spec.rb | 74 |
3 files changed, 52 insertions, 29 deletions
diff --git a/app/controllers/groups/clusters_controller.rb b/app/controllers/groups/clusters_controller.rb index 92602fd8096..50c44b7a58b 100644 --- a/app/controllers/groups/clusters_controller.rb +++ b/app/controllers/groups/clusters_controller.rb @@ -3,6 +3,7 @@ class Groups::ClustersController < Clusters::ClustersController include ControllerWithCrossProjectAccessCheck + prepend_before_action :check_group_clusters_feature_flag! prepend_before_action :group requires_cross_project_access @@ -17,4 +18,8 @@ class Groups::ClustersController < Clusters::ClustersController def group @group ||= find_routable!(Group, params[:group_id] || params[:id]) end + + def check_group_clusters_feature_flag! + render_404 unless Feature.enabled?(:group_clusters) + end end diff --git a/app/helpers/groups_helper.rb b/app/helpers/groups_helper.rb index a939a0ae56d..e9b9b9b7721 100644 --- a/app/helpers/groups_helper.rb +++ b/app/helpers/groups_helper.rb @@ -140,7 +140,7 @@ module GroupsHelper can?(current_user, "read_group_#{resource}".to_sym, @group) end - if can?(current_user, :read_cluster, @group) + if can?(current_user, :read_cluster, @group) && Feature.enabled?(:group_clusters) links << :kubernetes end diff --git a/spec/controllers/groups/clusters_controller_spec.rb b/spec/controllers/groups/clusters_controller_spec.rb index 05dc30c8fdf..5550da16037 100644 --- a/spec/controllers/groups/clusters_controller_spec.rb +++ b/spec/controllers/groups/clusters_controller_spec.rb @@ -20,45 +20,63 @@ describe Groups::ClustersController do get :index, params.reverse_merge(group_id: group) end - describe 'functionality' do - context 'when group has one or more clusters' do - let(:group) { create(:group) } - let!(:enabled_cluster) { create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) } - let!(:disabled_cluster) { create(:cluster, :disabled, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) } - it 'lists available clusters' do - go + context 'when feature flag is not enabled' do + before do + stub_feature_flags(group_clusters: false) + end - expect(response).to have_gitlab_http_status(:ok) - expect(response).to render_template(:index) - expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster]) - end + it 'renders 404' do + go - context 'when page is specified' do - let(:last_page) { group.clusters.page.total_pages } + expect(response).to have_gitlab_http_status(404) + end + end - before do - allow(Clusters::Cluster).to receive(:paginates_per).and_return(1) - create_list(:cluster, 2, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) - end + context 'when feature flag is enabled' do + before do + stub_feature_flags(group_clusters: true) + end - it 'redirects to the page' do - go(page: last_page) + describe 'functionality' do + context 'when group has one or more clusters' do + let(:group) { create(:group) } + let!(:enabled_cluster) { create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) } + let!(:disabled_cluster) { create(:cluster, :disabled, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) } + it 'lists available clusters' do + go expect(response).to have_gitlab_http_status(:ok) - expect(assigns(:clusters).current_page).to eq(last_page) + expect(response).to render_template(:index) + expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster]) + end + + context 'when page is specified' do + let(:last_page) { group.clusters.page.total_pages } + + before do + allow(Clusters::Cluster).to receive(:paginates_per).and_return(1) + create_list(:cluster, 2, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) + end + + it 'redirects to the page' do + go(page: last_page) + + expect(response).to have_gitlab_http_status(:ok) + expect(assigns(:clusters).current_page).to eq(last_page) + end end end - end - context 'when group does not have a cluster' do - let(:group) { create(:group) } + context 'when group does not have a cluster' do + let(:group) { create(:group) } - it 'returns an empty state page' do - go + it 'returns an empty state page' do + go - expect(response).to have_gitlab_http_status(:ok) - expect(response).to render_template(:index, partial: :empty_state) - expect(assigns(:clusters)).to eq([]) + expect(response).to have_gitlab_http_status(:ok) + expect(response).to render_template(:index, partial: :empty_state) + expect(assigns(:clusters)).to eq([]) + end end end end |