diff --git a/db/post_migrate/20170412174900_rename_reserved_dynamic_paths.rb b/db/post_migrate/20170412174900_rename_reserved_dynamic_paths.rb index 0fe04a23959..a23f83205f1 100644 --- a/db/post_migrate/20170412174900_rename_reserved_dynamic_paths.rb +++ b/db/post_migrate/20170412174900_rename_reserved_dynamic_paths.rb @@ -23,6 +23,7 @@ class RenameReservedDynamicPaths < ActiveRecord::Migration notification_settings oauth sent_notifications + unicorn_test uploads users ] @@ -33,9 +34,19 @@ class RenameReservedDynamicPaths < ActiveRecord::Migration info/lfs/objects ] + DISSALLOWED_GROUP_PATHS = %w[ + activity + avatar + group_members + labels + milestones + subgroups + ] + def up rename_root_paths(DISALLOWED_ROOT_PATHS) rename_wildcard_paths(DISALLOWED_WILDCARD_PATHS) + rename_child_paths(DISSALLOWED_GROUP_PATHS) end def down diff --git a/lib/gitlab/database/rename_reserved_paths_migration/v1.rb b/lib/gitlab/database/rename_reserved_paths_migration/v1.rb index 6296e964187..1966f5c1cec 100644 --- a/lib/gitlab/database/rename_reserved_paths_migration/v1.rb +++ b/lib/gitlab/database/rename_reserved_paths_migration/v1.rb @@ -7,11 +7,16 @@ module Gitlab end def rename_wildcard_paths(one_or_more_paths) + rename_child_paths(one_or_more_paths) paths = Array(one_or_more_paths) - RenameNamespaces.new(paths, self).rename_namespaces(type: :wildcard) RenameProjects.new(paths, self).rename_projects end + def rename_child_paths(one_or_more_paths) + paths = Array(one_or_more_paths) + RenameNamespaces.new(paths, self).rename_namespaces(type: :child) + end + def rename_root_paths(paths) paths = Array(paths) RenameNamespaces.new(paths, self).rename_namespaces(type: :top_level) diff --git a/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces.rb b/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces.rb index d863de90844..b9f4f3cff3c 100644 --- a/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces.rb +++ b/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces.rb @@ -13,7 +13,7 @@ module Gitlab def namespaces_for_paths(type:) namespaces = case type - when :wildcard + when :child MigrationClasses::Namespace.where.not(parent_id: nil) when :top_level MigrationClasses::Namespace.where(parent_id: nil) diff --git a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb index 6d58413edf2..a25c5da488a 100644 --- a/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb +++ b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1/rename_namespaces_spec.rb @@ -21,13 +21,13 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do parent = create(:namespace, path: 'parent') child = create(:namespace, path: 'the-path', parent: parent) - found_ids = subject.namespaces_for_paths(type: :wildcard). + found_ids = subject.namespaces_for_paths(type: :child). map(&:id) expect(found_ids).to contain_exactly(child.id) end end - context 'for wildcard namespaces' do + context 'for child namespaces' do it 'only returns child namespaces with the correct path' do _root_namespace = create(:namespace, path: 'THE-path') _other_path = create(:namespace, @@ -37,7 +37,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do path: 'the-path', parent: create(:namespace)) - found_ids = subject.namespaces_for_paths(type: :wildcard). + found_ids = subject.namespaces_for_paths(type: :child). map(&:id) expect(found_ids).to contain_exactly(namespace.id) end @@ -165,7 +165,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do expect(subject).to receive(:rename_namespace). with(migration_namespace(child_namespace)) - subject.rename_namespaces(type: :wildcard) + subject.rename_namespaces(type: :child) end end end diff --git a/spec/lib/gitlab/database/rename_reserved_paths_migration_spec.rb b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb similarity index 62% rename from spec/lib/gitlab/database/rename_reserved_paths_migration_spec.rb rename to spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb index 743054e0efc..f8cc1eb91ec 100644 --- a/spec/lib/gitlab/database/rename_reserved_paths_migration_spec.rb +++ b/spec/lib/gitlab/database/rename_reserved_paths_migration/v1_spec.rb @@ -1,5 +1,18 @@ require 'spec_helper' +shared_examples 'renames child namespaces' do |type| + it 'renames namespaces' do + rename_namespaces = double + expect(described_class::RenameNamespaces). + to receive(:new).with(['first-path', 'second-path'], subject). + and_return(rename_namespaces) + expect(rename_namespaces).to receive(:rename_namespaces). + with(type: :child) + + subject.rename_wildcard_paths(['first-path', 'second-path']) + end +end + describe Gitlab::Database::RenameReservedPathsMigration::V1 do let(:subject) { FakeRenameReservedPathMigrationV1.new } @@ -7,17 +20,12 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1 do allow(subject).to receive(:say) end - describe '#rename_wildcard_paths' do - it 'should rename namespaces' do - rename_namespaces = double - expect(described_class::RenameNamespaces). - to receive(:new).with(['first-path', 'second-path'], subject). - and_return(rename_namespaces) - expect(rename_namespaces).to receive(:rename_namespaces). - with(type: :wildcard) + describe '#rename_child_paths' do + it_behaves_like 'renames child namespaces' + end - subject.rename_wildcard_paths(['first-path', 'second-path']) - end + describe '#rename_wildcard_paths' do + it_behaves_like 'renames child namespaces' it 'should rename projects' do rename_projects = double