summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/routes.rb6
-rw-r--r--features/steps/project/project_network_graph.rb2
-rw-r--r--lib/extracts_path.rb6
-rw-r--r--spec/controllers/commits_controller_spec.rb2
-rw-r--r--spec/routing/project_routing_spec.rb20
5 files changed, 21 insertions, 15 deletions
diff --git a/config/routes.rb b/config/routes.rb
index 57eefe23abb..3550636c91c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -165,7 +165,7 @@ Gitlab::Application.routes.draw do
#
# Project Area
#
- resources :projects, constraints: { id: /[a-zA-Z.0-9_\-\/]+/ }, except: [:new, :create, :index], path: "/" do
+ resources :projects, constraints: { id: /(?:[a-zA-Z.0-9_\-]+\/)?[a-zA-Z.0-9_\-]+/ }, except: [:new, :create, :index], path: "/" do
member do
get "wall"
get "files"
@@ -174,10 +174,10 @@ Gitlab::Application.routes.draw do
resources :blob, only: [:show], constraints: {id: /.+/}
resources :tree, only: [:show, :edit, :update], constraints: {id: /.+/}
resources :commit, only: [:show], constraints: {id: /[[:alnum:]]{6,40}/}
- resources :commits, only: [:show], constraints: {id: /.+/}
+ resources :commits, only: [:show], constraints: {id: /(?:[^.]|\.(?!atom$))+/, format: /atom/}
resources :compare, only: [:index, :create]
resources :blame, only: [:show], constraints: {id: /.+/}
- resources :graph, only: [:show], constraints: {id: /.+/}
+ resources :graph, only: [:show], constraints: {id: /(?:[^.]|\.(?!json$))+/, format: /json/}
match "/compare/:from...:to" => "compare#show", as: "compare",
:via => [:get, :post], constraints: {from: /.+/, to: /.+/}
diff --git a/features/steps/project/project_network_graph.rb b/features/steps/project/project_network_graph.rb
index 2ca629883a9..7e9a7c295d0 100644
--- a/features/steps/project/project_network_graph.rb
+++ b/features/steps/project/project_network_graph.rb
@@ -27,6 +27,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
And 'I switch ref to "stable"' do
page.select 'stable', :from => 'ref'
+ sleep 2
end
And 'page should select "stable" in select box' do
@@ -44,6 +45,7 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
fill_in 'q', :with => '98d6492'
find('button').click
end
+ sleep 2
end
And 'page should have "v2.1.0" on graph' do
diff --git a/lib/extracts_path.rb b/lib/extracts_path.rb
index fd0050cfd5f..66b2f450545 100644
--- a/lib/extracts_path.rb
+++ b/lib/extracts_path.rb
@@ -105,12 +105,6 @@ module ExtractsPath
# Automatically renders `not_found!` if a valid tree path could not be
# resolved (e.g., when a user inserts an invalid path or ref).
def assign_ref_vars
- # Handle formats embedded in the id
- if params[:id].ends_with?('.atom')
- params[:id].gsub!(/\.atom$/, '')
- request.format = :atom
- end
-
path = CGI::unescape(request.fullpath.dup)
@ref, @path = extract_ref(path)
diff --git a/spec/controllers/commits_controller_spec.rb b/spec/controllers/commits_controller_spec.rb
index 1d5d99df802..99cbcd13d56 100644
--- a/spec/controllers/commits_controller_spec.rb
+++ b/spec/controllers/commits_controller_spec.rb
@@ -13,7 +13,7 @@ describe CommitsController do
describe "GET show" do
context "as atom feed" do
it "should render as atom" do
- get :show, project_id: project.path, id: "master.atom"
+ get :show, project_id: project.path, id: "master", format: "atom"
response.should be_success
response.content_type.should == 'application/atom+xml'
end
diff --git a/spec/routing/project_routing_spec.rb b/spec/routing/project_routing_spec.rb
index 9cf5d91349f..986441494a5 100644
--- a/spec/routing/project_routing_spec.rb
+++ b/spec/routing/project_routing_spec.rb
@@ -56,7 +56,6 @@ end
# projects POST /projects(.:format) projects#create
# new_project GET /projects/new(.:format) projects#new
# wall_project GET /:id/wall(.:format) projects#wall
-# graph_project GET /:id/graph(.:format) projects#graph
# files_project GET /:id/files(.:format) projects#files
# edit_project GET /:id/edit(.:format) projects#edit
# project GET /:id(.:format) projects#show
@@ -75,10 +74,6 @@ describe ProjectsController, "routing" do
get("/gitlabhq/wall").should route_to('projects#wall', id: 'gitlabhq')
end
- it "to #graph" do
- get("/gitlabhq/graph/master").should route_to('graph#show', project_id: 'gitlabhq', id: 'master')
- end
-
it "to #files" do
get("/gitlabhq/files").should route_to('projects#files', id: 'gitlabhq')
end
@@ -202,6 +197,7 @@ describe RefsController, "routing" do
it "to #logs_tree" do
get("/gitlabhq/refs/stable/logs_tree").should route_to('refs#logs_tree', project_id: 'gitlabhq', id: 'stable')
get("/gitlabhq/refs/stable/logs_tree/foo/bar/baz").should route_to('refs#logs_tree', project_id: 'gitlabhq', id: 'stable', path: 'foo/bar/baz')
+ get("/gitlab/gitlabhq/refs/stable/logs_tree/files.scss").should route_to('refs#logs_tree', project_id: 'gitlab/gitlabhq', id: 'stable', path: 'files.scss')
end
end
@@ -301,6 +297,10 @@ describe CommitsController, "routing" do
let(:actions) { [:show] }
let(:controller) { 'commits' }
end
+
+ it "to #show" do
+ get("/gitlab/gitlabhq/commits/master.atom").should route_to('commits#show', project_id: 'gitlab/gitlabhq', id: "master", format: "atom")
+ end
end
# project_team_members GET /:project_id/team_members(.:format) team_members#index
@@ -385,6 +385,7 @@ end
describe BlameController, "routing" do
it "to #show" do
get("/gitlabhq/blame/master/app/models/project.rb").should route_to('blame#show', project_id: 'gitlabhq', id: 'master/app/models/project.rb')
+ get("/gitlab/gitlabhq/blame/master/files.scss").should route_to('blame#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
end
end
@@ -393,6 +394,7 @@ describe BlobController, "routing" do
it "to #show" do
get("/gitlabhq/blob/master/app/models/project.rb").should route_to('blob#show', project_id: 'gitlabhq', id: 'master/app/models/project.rb')
get("/gitlabhq/blob/master/app/models/compare.rb").should route_to('blob#show', project_id: 'gitlabhq', id: 'master/app/models/compare.rb')
+ get("/gitlab/gitlabhq/blob/master/files.scss").should route_to('blob#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
end
end
@@ -400,6 +402,7 @@ end
describe TreeController, "routing" do
it "to #show" do
get("/gitlabhq/tree/master/app/models/project.rb").should route_to('tree#show', project_id: 'gitlabhq', id: 'master/app/models/project.rb')
+ get("/gitlab/gitlabhq/tree/master/files.scss").should route_to('tree#show', project_id: 'gitlab/gitlabhq', id: 'master/files.scss')
end
end
@@ -420,3 +423,10 @@ describe CompareController, "routing" do
get("/gitlabhq/compare/issue/1234...stable").should route_to('compare#show', project_id: 'gitlabhq', from: 'issue/1234', to: 'stable')
end
end
+
+describe GraphController, "routing" do
+ it "to #show" do
+ get("/gitlabhq/graph/master").should route_to('graph#show', project_id: 'gitlabhq', id: 'master')
+ get("/gitlabhq/graph/master.json").should route_to('graph#show', project_id: 'gitlabhq', id: 'master', format: "json")
+ end
+end