Rename child namespaces in migrationhelpers
This commit is contained in:
parent
08b1bc3489
commit
2e2a63c866
5 changed files with 40 additions and 16 deletions
|
@ -23,6 +23,7 @@ class RenameReservedDynamicPaths < ActiveRecord::Migration
|
||||||
notification_settings
|
notification_settings
|
||||||
oauth
|
oauth
|
||||||
sent_notifications
|
sent_notifications
|
||||||
|
unicorn_test
|
||||||
uploads
|
uploads
|
||||||
users
|
users
|
||||||
]
|
]
|
||||||
|
@ -33,9 +34,19 @@ class RenameReservedDynamicPaths < ActiveRecord::Migration
|
||||||
info/lfs/objects
|
info/lfs/objects
|
||||||
]
|
]
|
||||||
|
|
||||||
|
DISSALLOWED_GROUP_PATHS = %w[
|
||||||
|
activity
|
||||||
|
avatar
|
||||||
|
group_members
|
||||||
|
labels
|
||||||
|
milestones
|
||||||
|
subgroups
|
||||||
|
]
|
||||||
|
|
||||||
def up
|
def up
|
||||||
rename_root_paths(DISALLOWED_ROOT_PATHS)
|
rename_root_paths(DISALLOWED_ROOT_PATHS)
|
||||||
rename_wildcard_paths(DISALLOWED_WILDCARD_PATHS)
|
rename_wildcard_paths(DISALLOWED_WILDCARD_PATHS)
|
||||||
|
rename_child_paths(DISSALLOWED_GROUP_PATHS)
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
|
|
|
@ -7,11 +7,16 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def rename_wildcard_paths(one_or_more_paths)
|
def rename_wildcard_paths(one_or_more_paths)
|
||||||
|
rename_child_paths(one_or_more_paths)
|
||||||
paths = Array(one_or_more_paths)
|
paths = Array(one_or_more_paths)
|
||||||
RenameNamespaces.new(paths, self).rename_namespaces(type: :wildcard)
|
|
||||||
RenameProjects.new(paths, self).rename_projects
|
RenameProjects.new(paths, self).rename_projects
|
||||||
end
|
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)
|
def rename_root_paths(paths)
|
||||||
paths = Array(paths)
|
paths = Array(paths)
|
||||||
RenameNamespaces.new(paths, self).rename_namespaces(type: :top_level)
|
RenameNamespaces.new(paths, self).rename_namespaces(type: :top_level)
|
||||||
|
|
|
@ -13,7 +13,7 @@ module Gitlab
|
||||||
|
|
||||||
def namespaces_for_paths(type:)
|
def namespaces_for_paths(type:)
|
||||||
namespaces = case type
|
namespaces = case type
|
||||||
when :wildcard
|
when :child
|
||||||
MigrationClasses::Namespace.where.not(parent_id: nil)
|
MigrationClasses::Namespace.where.not(parent_id: nil)
|
||||||
when :top_level
|
when :top_level
|
||||||
MigrationClasses::Namespace.where(parent_id: nil)
|
MigrationClasses::Namespace.where(parent_id: nil)
|
||||||
|
|
|
@ -21,13 +21,13 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do
|
||||||
parent = create(:namespace, path: 'parent')
|
parent = create(:namespace, path: 'parent')
|
||||||
child = create(:namespace, path: 'the-path', parent: 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)
|
map(&:id)
|
||||||
expect(found_ids).to contain_exactly(child.id)
|
expect(found_ids).to contain_exactly(child.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for wildcard namespaces' do
|
context 'for child namespaces' do
|
||||||
it 'only returns child namespaces with the correct path' do
|
it 'only returns child namespaces with the correct path' do
|
||||||
_root_namespace = create(:namespace, path: 'THE-path')
|
_root_namespace = create(:namespace, path: 'THE-path')
|
||||||
_other_path = create(:namespace,
|
_other_path = create(:namespace,
|
||||||
|
@ -37,7 +37,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do
|
||||||
path: 'the-path',
|
path: 'the-path',
|
||||||
parent: create(:namespace))
|
parent: create(:namespace))
|
||||||
|
|
||||||
found_ids = subject.namespaces_for_paths(type: :wildcard).
|
found_ids = subject.namespaces_for_paths(type: :child).
|
||||||
map(&:id)
|
map(&:id)
|
||||||
expect(found_ids).to contain_exactly(namespace.id)
|
expect(found_ids).to contain_exactly(namespace.id)
|
||||||
end
|
end
|
||||||
|
@ -165,7 +165,7 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1::RenameNamespaces do
|
||||||
expect(subject).to receive(:rename_namespace).
|
expect(subject).to receive(:rename_namespace).
|
||||||
with(migration_namespace(child_namespace))
|
with(migration_namespace(child_namespace))
|
||||||
|
|
||||||
subject.rename_namespaces(type: :wildcard)
|
subject.rename_namespaces(type: :child)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
require 'spec_helper'
|
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
|
describe Gitlab::Database::RenameReservedPathsMigration::V1 do
|
||||||
let(:subject) { FakeRenameReservedPathMigrationV1.new }
|
let(:subject) { FakeRenameReservedPathMigrationV1.new }
|
||||||
|
|
||||||
|
@ -7,18 +20,13 @@ describe Gitlab::Database::RenameReservedPathsMigration::V1 do
|
||||||
allow(subject).to receive(:say)
|
allow(subject).to receive(:say)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#rename_wildcard_paths' do
|
describe '#rename_child_paths' do
|
||||||
it 'should rename namespaces' do
|
it_behaves_like 'renames child namespaces'
|
||||||
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)
|
|
||||||
|
|
||||||
subject.rename_wildcard_paths(['first-path', 'second-path'])
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#rename_wildcard_paths' do
|
||||||
|
it_behaves_like 'renames child namespaces'
|
||||||
|
|
||||||
it 'should rename projects' do
|
it 'should rename projects' do
|
||||||
rename_projects = double
|
rename_projects = double
|
||||||
expect(described_class::RenameProjects).
|
expect(described_class::RenameProjects).
|
Loading…
Reference in a new issue