Skip to content
Snippets Groups Projects
Verified Commit 9ffe8aa8 authored by Dat Tang's avatar Dat Tang Committed by GitLab
Browse files

Merge branch 'mk-patch-project-settings-17-4' into '17-4-stable-ee'

Add param filtering to avoid error while saving project settings

See merge request !173428



Merged-by: default avatarDat Tang <dattang@gitlab.com>
Approved-by: Eduardo Bonet's avatarEduardo Bonet <ebonet@gitlab.com>
Co-authored-by: Gosia Ksionek's avatarMałgorzata Ksionek <mksionek@gitlab.com>
parents 84587769 4787ee40
No related branches found
No related tags found
2 merge requests!177242Draft: Cherry-pick 176803 MR changes over 17.4.6 version,!173428Add param filtering to avoid error while saving project settings
Pipeline #1562870133 passed with warnings
......@@ -98,7 +98,6 @@ def project_setting_attributes
attributes = %i[
prevent_merge_without_jira_issue
cve_id_request_enabled
duo_features_enabled
product_analytics_data_collector_host
cube_api_base_url
cube_api_key
......@@ -113,6 +112,10 @@ def project_setting_attributes
attributes << :spp_repository_pipeline_access
end
unless project&.project_setting&.duo_features_enabled_locked?
attributes << :duo_features_enabled
end
super + attributes
end
......
......@@ -6,7 +6,7 @@
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project, reload: true) { create(:project) }
let_it_be(:project, reload: true) { create(:project, namespace: group) }
let_it_be(:public_project) { create(:project, :public, :repository, namespace: group) }
......@@ -391,24 +391,47 @@
expect(project.project_setting.cve_id_request_enabled).to eq(true)
end
it 'updates duo_features_enabled' do
project.project_setting.duo_features_enabled = false
project.project_setting.save!
context 'when enabling duo features' do
let(:params) { { project_setting_attributes: { duo_features_enabled: true } } }
params = {
project_setting_attributes: {
duo_features_enabled: true
}
}
put :update,
params: {
namespace_id: project.namespace,
id: project,
project: params
}
project.reload
let(:request) do
put :update, params: { namespace_id: project.namespace, id: project, project: params }
end
it 'updates duo_features_enabled' do
project.project_setting.duo_features_enabled = false
project.project_setting.save!
expect(project.project_setting.duo_features_enabled).to eq(true)
request
expect(project.reload.project_setting.duo_features_enabled).to eq(true)
end
context 'when duo features are locked by the ancestor' do
before do
project.project_setting.duo_features_enabled = false
project.project_setting.save!
project.namespace.namespace_settings.lock_duo_features_enabled = true
project.namespace.namespace_settings.duo_features_enabled = false
project.namespace.namespace_settings.save!
end
it 'does not update duo feature' do
expect { request }.not_to change { project.reload.project_setting.duo_features_enabled }.from(false)
end
context 'with more params passed' do
let(:params) do
{ project_setting_attributes: { duo_features_enabled: true }, description: 'Settings test' }
end
it 'does not update duo feature, but updates other attributes' do
expect { request }.not_to change { project.reload.project_setting.duo_features_enabled }.from(false)
expect(project.description).to eq('Settings test')
end
end
end
end
context 'when merge_pipelines_enabled param is specified' do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment