summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Koltsov <gkoltsov@gitlab.com>2019-08-28 14:31:16 +0100
committerGeorge Koltsov <gkoltsov@gitlab.com>2019-08-28 14:32:09 +0100
commitf9d4e4923984fb677349be36572528265010ccbe (patch)
treed8b20e1b90c0bba40f280842265ae4f4ac88c531
parent96f2b646f05a106c97527981b1f7b192c2724846 (diff)
downloadgitlab-ce-f9d4e4923984fb677349be36572528265010ccbe.tar.gz
Allow project feature permissions to be overridden during import
-rw-r--r--app/models/project.rb2
-rw-r--r--spec/lib/gitlab/import_export/project_tree_restorer_spec.rb18
2 files changed, 20 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index 66d5286196e..658d1883611 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -61,6 +61,8 @@ class Project < ApplicationRecord
delegate :feature_available?, :builds_enabled?, :wiki_enabled?,
:merge_requests_enabled?, :issues_enabled?, :pages_enabled?, :public_pages?,
+ :merge_requests_access_level, :issues_access_level, :wiki_access_level,
+ :snippets_access_level, :builds_access_level, :repository_access_level,
to: :project_feature, allow_nil: true
delegate :base_dir, :disk_path, :ensure_storage_path_exists, to: :storage
diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
index d6e1fbaa979..37f28ce39a0 100644
--- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
+++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb
@@ -396,6 +396,24 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do
expect(project.lfs_enabled).to be_falsey
end
+
+ context 'when overriding feature access levels' do
+ it 'overrides project feature access levels' do
+ access_level_keys = project.project_feature.attributes.keys.select { |a| a =~ /_access_level/ }
+ access_level_keys.delete('pages_access_level')
+ disabled_access_levels = Hash[access_level_keys.collect { |item| [item, 'disabled'] }]
+
+ project.create_import_data(data: { override_params: disabled_access_levels })
+
+ restored_project_json
+
+ aggregate_failures do
+ access_level_keys.each do |key|
+ expect(project.public_send(key)).to eq(ProjectFeature::DISABLED)
+ end
+ end
+ end
+ end
end
context 'with a project that has a group' do