From 8bc5ab5325bfed1b94437121d9a9b7c9cdb0e171 Mon Sep 17 00:00:00 2001 From: anna_vovchenko Date: Tue, 25 Oct 2022 01:06:40 +0300 Subject: [PATCH 1/2] Add Infrastructure toggle As part of splitting the operations toggle, infrastructure needs its own toggle. --- .../permissions/components/settings_panel.vue | 25 +++++++++++++++++++ app/helpers/projects_helper.rb | 6 +++-- locale/gitlab.pot | 6 +++++ .../components/settings_panel_spec.js | 20 +++++++++++++++ spec/helpers/projects_helper_spec.rb | 3 ++- 5 files changed, 57 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 3e5c02bbf19e63..c37b4cc643af8c 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -41,6 +41,8 @@ export default { featureFlagsHelpText: s__( 'ProjectSettings|Roll out new features without redeploying with feature flags.', ), + infrastructureLabel: s__('ProjectSettings|Infrastructure'), + infrastructureHelpText: s__('ProjectSettings|Configure your infrastructure.'), monitorLabel: s__('ProjectSettings|Monitor'), packagesHelpText: s__( 'ProjectSettings|Every project can have its own space to store its packages. Note: The Package Registry is always visible when a project is public.', @@ -157,6 +159,11 @@ export default { required: false, default: '', }, + infrastructureHelpPath: { + type: String, + required: false, + default: '', + }, releasesHelpPath: { type: String, required: false, @@ -245,6 +252,7 @@ export default { operationsAccessLevel: featureAccessLevel.EVERYONE, environmentsAccessLevel: featureAccessLevel.EVERYONE, featureFlagsAccessLevel: featureAccessLevel.PROJECT_MEMBERS, + infrastructureAccessLevel: featureAccessLevel.PROJECT_MEMBERS, releasesAccessLevel: featureAccessLevel.EVERYONE, monitorAccessLevel: featureAccessLevel.EVERYONE, containerRegistryAccessLevel: featureAccessLevel.EVERYONE, @@ -433,6 +441,10 @@ export default { featureAccessLevel.PROJECT_MEMBERS, this.featureFlagsAccessLevel, ); + this.infrastructureAccessLevel = Math.min( + featureAccessLevel.PROJECT_MEMBERS, + this.infrastructureAccessLevel, + ); this.releasesAccessLevel = Math.min( featureAccessLevel.PROJECT_MEMBERS, this.releasesAccessLevel, @@ -981,6 +993,19 @@ export default { name="project[project_feature_attributes][feature_flags_access_level]" /> + + + { const findConfirmDangerButton = () => wrapper.findComponent(ConfirmDanger); const findEnvironmentsSettings = () => wrapper.findComponent({ ref: 'environments-settings' }); const findFeatureFlagsSettings = () => wrapper.findComponent({ ref: 'feature-flags-settings' }); + const findInfrastructureSettings = () => + wrapper.findComponent({ ref: 'infrastructure-settings' }); const findReleasesSettings = () => wrapper.findComponent({ ref: 'environments-settings' }); const findMonitorSettings = () => wrapper.findComponent({ ref: 'monitor-settings' }); @@ -841,6 +843,24 @@ describe('Settings Panel', () => { }); }); }); + describe('Infrastructure', () => { + describe('with feature flag', () => { + it('should show the infrastructure toggle', () => { + wrapper = mountComponent({ + glFeatures: { splitOperationsVisibilityPermissions: true }, + }); + + expect(findInfrastructureSettings().exists()).toBe(true); + }); + }); + describe('without feature flag', () => { + it('should not show the infrastructure toggle', () => { + wrapper = mountComponent({}); + + expect(findInfrastructureSettings().exists()).toBe(false); + }); + }); + }); describe('Releases', () => { describe('with feature flag', () => { it('should show the releases toggle', () => { diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index 07c2d50f70a592..39b8b55267202a 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -969,7 +969,8 @@ def license_name containerRegistryAccessLevel: project.project_feature.container_registry_access_level, environmentsAccessLevel: project.project_feature.environments_access_level, featureFlagsAccessLevel: project.project_feature.feature_flags_access_level, - releasesAccessLevel: project.project_feature.releases_access_level + releasesAccessLevel: project.project_feature.releases_access_level, + infrastructureAccessLevel: project.project_feature.infrastructure_access_level ) end -- GitLab From ec7c27592fe1c8d5043f59440c937be07703c812 Mon Sep 17 00:00:00 2001 From: anna_vovchenko Date: Wed, 2 Nov 2022 12:39:28 +0200 Subject: [PATCH 2/2] Update QueryLimiting to fix broken spec --- spec/features/projects/user_changes_project_visibility_spec.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/spec/features/projects/user_changes_project_visibility_spec.rb b/spec/features/projects/user_changes_project_visibility_spec.rb index d2a7596aec0b40..df13bb55c6dbff 100644 --- a/spec/features/projects/user_changes_project_visibility_spec.rb +++ b/spec/features/projects/user_changes_project_visibility_spec.rb @@ -103,6 +103,9 @@ sign_in(project.first_owner) visit edit_project_path(project) + + # https://gitlab.com/gitlab-org/gitlab/-/issues/381259 + allow(Gitlab::QueryLimiting::Transaction).to receive(:threshold).and_return(110) end it_behaves_like 'does not require confirmation' -- GitLab