From 2414c69ee981cf6432e513dfdcf57a9badc5d51f Mon Sep 17 00:00:00 2001 From: Bob Van Landuyt Date: Tue, 7 Nov 2017 13:04:46 +0100 Subject: Check redirecting with a querystring --- lib/gitlab/routing.rb | 6 ++++-- spec/routing/group_routing_spec.rb | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/gitlab/routing.rb b/lib/gitlab/routing.rb index defb47663cb..910533076b0 100644 --- a/lib/gitlab/routing.rb +++ b/lib/gitlab/routing.rb @@ -44,8 +44,10 @@ module Gitlab def self.redirect_legacy_paths(router, *paths) build_redirect_path = lambda do |request, _params, path| # Only replace the last occurence of `path`. - path = request.fullpath.sub(%r{/#{path}/*(?!.*#{path})}, "/-/#{path}/") - path << request.query_string if request.query_string.present? + # + # `request.fullpath` includes the querystring + path = request.path.sub(%r{/#{path}/*(?!.*#{path})}, "/-/#{path}/") + path << "?#{request.query_string}" if request.query_string.present? path end diff --git a/spec/routing/group_routing_spec.rb b/spec/routing/group_routing_spec.rb index 3e56d34bc9d..7a4c8304e62 100644 --- a/spec/routing/group_routing_spec.rb +++ b/spec/routing/group_routing_spec.rb @@ -74,6 +74,16 @@ describe "Groups", "routing" do expect(request).to redirect_to("/groups/#{group_path}/-/milestones/#{milestone.id}/merge_requests") end end + + context 'with a query string' do + it_behaves_like 'redirecting a legacy path', "/groups/complex.group-namegit/milestones?hello=world", "/groups/complex.group-namegit/-/milestones/?hello=world" do + let(:resource) { create(:group, parent: group, path: 'milestones') } + end + + it_behaves_like 'redirecting a legacy path', "/groups/complex.group-namegit/milestones?milestones=/milestones", "/groups/complex.group-namegit/-/milestones/?milestones=/milestones" do + let(:resource) { create(:group, parent: group, path: 'milestones') } + end + end end describe 'edit' do -- cgit v1.2.1