diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-10-26 18:49:07 +0300 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2017-11-07 21:52:09 +0300 |
commit | 5dde0536c323d14fef2327a8d553b5f8a8a7b2d0 (patch) | |
tree | bf95d6594a0925aff3b0c3ee3a5302667bcdb168 /spec | |
parent | 5d14337baff9c2ae8091b7b4ab954f8024449a52 (diff) |
Free up `avatar`, `group_members` and `milestones` as paths
Diffstat (limited to 'spec')
-rw-r--r-- | spec/lib/gitlab/path_regex_spec.rb | 14 | ||||
-rw-r--r-- | spec/routing/group_routing_spec.rb | 82 | ||||
-rw-r--r-- | spec/routing/routing_spec.rb | 30 |
3 files changed, 71 insertions, 55 deletions
diff --git a/spec/lib/gitlab/path_regex_spec.rb b/spec/lib/gitlab/path_regex_spec.rb index ee63c9338c5..c76084114cb 100644 --- a/spec/lib/gitlab/path_regex_spec.rb +++ b/spec/lib/gitlab/path_regex_spec.rb @@ -225,8 +225,6 @@ describe Gitlab::PathRegex do it 'accepts group routes' do expect(subject).to match('activity/') - expect(subject).to match('group_members/') - expect(subject).to match('labels/') end it 'is not case sensitive' do @@ -258,8 +256,6 @@ describe Gitlab::PathRegex do it 'accepts group routes' do expect(subject).to match('activity/') - expect(subject).to match('group_members/') - expect(subject).to match('labels/') end end @@ -280,8 +276,6 @@ describe Gitlab::PathRegex do it 'accepts group routes' do expect(subject).to match('activity/more/') - expect(subject).to match('group_members/more/') - expect(subject).to match('labels/more/') end end end @@ -304,8 +298,6 @@ describe Gitlab::PathRegex do it 'rejects group routes' do expect(subject).not_to match('root/activity/') - expect(subject).not_to match('root/group_members/') - expect(subject).not_to match('root/labels/') end end @@ -326,8 +318,6 @@ describe Gitlab::PathRegex do it 'rejects group routes' do expect(subject).not_to match('root/activity/more/') - expect(subject).not_to match('root/group_members/more/') - expect(subject).not_to match('root/labels/more/') end end end @@ -361,8 +351,6 @@ describe Gitlab::PathRegex do it 'accepts group routes' do expect(subject).to match('activity/') - expect(subject).to match('group_members/') - expect(subject).to match('labels/') end it 'is not case sensitive' do @@ -394,8 +382,6 @@ describe Gitlab::PathRegex do it 'accepts group routes' do expect(subject).to match('root/activity/') - expect(subject).to match('root/group_members/') - expect(subject).to match('root/labels/') end it 'is not case sensitive' do diff --git a/spec/routing/group_routing_spec.rb b/spec/routing/group_routing_spec.rb index 39fbf082b4d..b3e55f5e3c9 100644 --- a/spec/routing/group_routing_spec.rb +++ b/spec/routing/group_routing_spec.rb @@ -1,18 +1,78 @@ 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') +describe "Groups", "routing" do + let(:group_path) { 'complex.group-namegit' } + let!(:group) { create(:group, path: group_path) } + + it "to #show" do + expect(get("/groups/#{group_path}")).to route_to('groups#show', id: group_path) + end + + it "also supports nested groups" do + nested_group = create(:group, parent: group) + expect(get("/#{group_path}/#{nested_group.path}")).to route_to('groups#show', id: "#{group_path}/#{nested_group.path}") + end + + it "also display group#show on the short path" do + expect(get("/#{group_path}")).to route_to('groups#show', id: group_path) + end + + it "to #activity" do + expect(get("/groups/#{group_path}/activity")).to route_to('groups#activity', id: group_path) + end + + it "to #issues" do + expect(get("/groups/#{group_path}/issues")).to route_to('groups#issues', id: group_path) + end + + it "to #members" do + expect(get("/groups/#{group_path}/-/group_members")).to route_to('groups/group_members#index', group_id: group_path) + end + + describe 'legacy redirection' do + shared_examples 'canonical groups route' do |path| + it "#{path} routes to the correct controller" do + expect(get("/groups/#{group_path}/-/#{path}")) + .to route_to(group_id: group_path, + controller: "groups/#{path}", + action: 'index') + end + + it_behaves_like 'redirecting a legacy path', "/groups/complex.group-namegit/#{path}", "/groups/complex.group-namegit/-/#{path}/" do + let(:resource) { create(:group, parent: group, path: path) } + end + end + + describe 'labels' do + it_behaves_like 'canonical groups route', 'labels' + end + + describe 'group_members' do + it_behaves_like 'canonical groups route', 'group_members' 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') } + describe 'avatar' do + it 'routes to the avatars controller' do + expect(delete("/groups/#{group_path}/-/avatar")) + .to route_to(group_id: group_path, + controller: 'groups/avatars', + action: 'destroy') + end + end + + describe 'milestones' do + it_behaves_like 'canonical groups route', 'milestones' + + context 'nested routes' do + include RSpec::Rails::RequestExampleGroup + + let(:milestone) { create(:milestone, group: group) } + + it 'redirects the nested routes' do + request = get("/groups/#{group_path}/milestones/#{milestone.id}/merge_requests") + expect(request).to redirect_to("/groups/#{group_path}/-/milestones/#{milestone.id}/merge_requests") + end + end end end end diff --git a/spec/routing/routing_spec.rb b/spec/routing/routing_spec.rb index 609481603af..32aa6e5ad52 100644 --- a/spec/routing/routing_spec.rb +++ b/spec/routing/routing_spec.rb @@ -278,36 +278,6 @@ describe "Authentication", "routing" do end end -describe "Groups", "routing" do - let(:name) { 'complex.group-namegit' } - let!(:group) { create(:group, name: name) } - - it "to #show" do - expect(get("/groups/#{name}")).to route_to('groups#show', id: name) - end - - it "also supports nested groups" do - nested_group = create(:group, parent: group) - expect(get("/#{name}/#{nested_group.name}")).to route_to('groups#show', id: "#{name}/#{nested_group.name}") - end - - it "also display group#show on the short path" do - expect(get("/#{name}")).to route_to('groups#show', id: name) - end - - it "to #activity" do - expect(get("/groups/#{name}/activity")).to route_to('groups#activity', id: name) - end - - it "to #issues" do - expect(get("/groups/#{name}/issues")).to route_to('groups#issues', id: name) - end - - it "to #members" do - expect(get("/groups/#{name}/group_members")).to route_to('groups/group_members#index', group_id: name) - end -end - describe HealthCheckController, 'routing' do it 'to #index' do expect(get('/health_check')).to route_to('health_check#index') |