diff options
author | Mayra Cabrera <mcabrera@gitlab.com> | 2018-11-05 19:05:10 +0100 |
---|---|---|
committer | Mayra Cabrera <mcabrera@gitlab.com> | 2018-11-05 19:10:01 +0100 |
commit | 0e9f60c089a2ce6768662e1cdd7bd6e9efc54c79 (patch) | |
tree | c6459cd97de1fea79e8eea93f83d5316dc939210 | |
parent | e65a3352dd2bd7bfc30cbe7774f0fd21bfed38f8 (diff) | |
download | gitlab-ce-34758-group-cluster-feature-flag.tar.gz |
Adds feature flag for Group Clusters34758-group-cluster-feature-flag
-rw-r--r-- | app/controllers/groups/clusters_controller.rb | 5 | ||||
-rw-r--r-- | app/helpers/groups_helper.rb | 2 | ||||
-rw-r--r-- | changelogs/unreleased/34758-group-cluster-feature-flag.yml | 5 | ||||
-rw-r--r-- | spec/controllers/groups/clusters_controller_spec.rb | 74 |
4 files changed, 57 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/changelogs/unreleased/34758-group-cluster-feature-flag.yml b/changelogs/unreleased/34758-group-cluster-feature-flag.yml new file mode 100644 index 00000000000..9f3597330be --- /dev/null +++ b/changelogs/unreleased/34758-group-cluster-feature-flag.yml @@ -0,0 +1,5 @@ +--- +title: Add feature flag for Group Cluster +merge_request: 22819 +author: +type: other 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 |