summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2017-10-26 16:10:03 +0200
committerBob Van Landuyt <bob@vanlanduyt.co>2017-11-07 19:52:09 +0100
commit5d14337baff9c2ae8091b7b4ab954f8024449a52 (patch)
treed5d18ed1d0c31e5aff9d029b483eda418a0c72de
parent414c4e3fd83a6a3cae623dcc8135d6ef09a30562 (diff)
downloadgitlab-ce-5d14337baff9c2ae8091b7b4ab954f8024449a52.tar.gz
Free up `labels` as a group name
-rw-r--r--config/routes/group.rb14
-rw-r--r--lib/gitlab/path_regex.rb1
-rw-r--r--spec/routing/group_routing_spec.rb18
3 files changed, 28 insertions, 5 deletions
diff --git a/config/routes/group.rb b/config/routes/group.rb
index f4d520a2518..ccd4ea7a8dd 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -34,10 +34,6 @@ constraints(GroupUrlConstrainer.new) do
end
end
- resources :labels, except: [:show] do
- post :toggle_subscription, on: :member
- end
-
scope path: '-' do
namespace :settings do
resource :ci_cd, only: [:show], controller: 'ci_cd'
@@ -46,6 +42,10 @@ constraints(GroupUrlConstrainer.new) do
resources :variables, only: [:index, :show, :update, :create, :destroy]
resources :children, only: [:index]
+
+ resources :labels, except: [:show] do
+ post :toggle_subscription, on: :member
+ end
end
end
@@ -58,4 +58,10 @@ constraints(GroupUrlConstrainer.new) do
put '/', action: :update
delete '/', action: :destroy
end
+
+ # Legacy paths should be defined last, so they would be ignored if routes with
+ # one of the previously reserved words exist.
+ scope(path: 'groups/*group_id') do
+ Gitlab::Routing.redirect_legacy_paths(self, :labels)
+ end
end
diff --git a/lib/gitlab/path_regex.rb b/lib/gitlab/path_regex.rb
index 22f8dd669d0..5b9c60f945c 100644
--- a/lib/gitlab/path_regex.rb
+++ b/lib/gitlab/path_regex.rb
@@ -120,7 +120,6 @@ module Gitlab
group_members
hooks
issues
- labels
ldap
ldap_group_links
merge_requests
diff --git a/spec/routing/group_routing_spec.rb b/spec/routing/group_routing_spec.rb
new file mode 100644
index 00000000000..39fbf082b4d
--- /dev/null
+++ b/spec/routing/group_routing_spec.rb
@@ -0,0 +1,18 @@
+require 'spec_helper'
+
+describe 'group routing' do
+ let!(:existing_group) { create(:group, parent: create(:group, path: 'gitlab-org'), path: 'infra') }
+
+ describe 'GET #labels' do
+ it 'routes to the correct controller' do
+ expect(get('/groups/gitlab-org/infra/-/labels'))
+ .to route_to(group_id: 'gitlab-org/infra',
+ controller: 'groups/labels',
+ action: 'index')
+ end
+
+ it_behaves_like 'redirecting a legacy path', '/groups/gitlab-org/infra/labels', '/groups/gitlab-org/infra/-/labels' do
+ let(:resource) { create(:group, parent: existing_group, path: 'labels') }
+ end
+ end
+end