From 7f1d954873263b5406bdd25afa02b06013cb70e3 Mon Sep 17 00:00:00 2001
From: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Date: Wed, 28 Dec 2016 13:43:08 +0200
Subject: [PATCH] Fix 500 error when visit group from admin area if group name
 contains dot

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
---
 .../unreleased/dz-improve-admin-group-routing.yml      |  4 ++++
 config/routes/admin.rb                                 |  2 +-
 spec/routing/admin_routing_spec.rb                     | 10 ++++++++--
 3 files changed, 13 insertions(+), 3 deletions(-)
 create mode 100644 changelogs/unreleased/dz-improve-admin-group-routing.yml

diff --git a/changelogs/unreleased/dz-improve-admin-group-routing.yml b/changelogs/unreleased/dz-improve-admin-group-routing.yml
new file mode 100644
index 00000000000..2360b965c90
--- /dev/null
+++ b/changelogs/unreleased/dz-improve-admin-group-routing.yml
@@ -0,0 +1,4 @@
+---
+title: Fix 500 error when visit group from admin area if group name contains dot
+merge_request:
+author:
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index 0dd2c8f7aef..23295b43c92 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -32,7 +32,7 @@ namespace :admin do
 
   scope(path: 'groups/*id',
         controller: :groups,
-        constraints: { id: Gitlab::Regex.namespace_route_regex }) do
+        constraints: { id: Gitlab::Regex.namespace_route_regex, format: /(html|json|atom)/ }) do
 
     scope(as: :group) do
       put :members_update
diff --git a/spec/routing/admin_routing_spec.rb b/spec/routing/admin_routing_spec.rb
index 661b671301e..99c44bde151 100644
--- a/spec/routing/admin_routing_spec.rb
+++ b/spec/routing/admin_routing_spec.rb
@@ -122,12 +122,18 @@ describe Admin::HealthCheckController, "routing" do
 end
 
 describe Admin::GroupsController, "routing" do
+  let(:name) { 'complex.group-namegit' }
+
   it "to #index" do
     expect(get("/admin/groups")).to route_to('admin/groups#index')
   end
 
   it "to #show" do
-    expect(get("/admin/groups/gitlab")).to route_to('admin/groups#show', id: 'gitlab')
-    expect(get("/admin/groups/gitlab/subgroup")).to route_to('admin/groups#show', id: 'gitlab/subgroup')
+    expect(get("/admin/groups/#{name}")).to route_to('admin/groups#show', id: name)
+    expect(get("/admin/groups/#{name}/subgroup")).to route_to('admin/groups#show', id: "#{name}/subgroup")
+  end
+
+  it "to #edit" do
+    expect(get("/admin/groups/#{name}/edit")).to route_to('admin/groups#edit', id: name)
   end
 end
-- 
GitLab