Skip to content
Snippets Groups Projects
Commit b70ca8e3 authored by Hiroyuki Sato's avatar Hiroyuki Sato Committed by Wes Gurney
Browse files

Drop support of root namespace in routing

parent d9fb4a96
No related branches found
No related tags found
1 merge request!4954Add support to configure webhook_timeout in gitlab.yaml
Showing
with 129 additions and 149 deletions
Loading
Loading
@@ -157,7 +157,7 @@ Gitlab::Application.routes.draw do
#
# Project Area
#
resources :projects, constraints: { id: /(?:[a-zA-Z.0-9_\-]+\/)?[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
put :transfer
post :fork
Loading
Loading
@@ -177,13 +177,13 @@ Gitlab::Application.routes.draw do
resources :graphs, only: [:show], constraints: {id: /(?:[^.]|\.(?!json$))+/, format: /json/}
match "/compare/:from...:to" => "compare#show", as: "compare", via: [:get, :post], constraints: {from: /.+/, to: /.+/}
 
resources :snippets do
resources :snippets, constraints: {id: /\d+/} do
member do
get "raw"
end
end
 
resources :wikis, only: [:show, :edit, :destroy, :create] do
resources :wikis, only: [:show, :edit, :destroy, :create], constraints: {id: /[a-zA-Z.0-9_\-]+/} do
collection do
get :pages
put ':id' => 'wikis#update'
Loading
Loading
@@ -195,7 +195,7 @@ Gitlab::Application.routes.draw do
end
end
 
resource :wall, only: [:show] do
resource :wall, only: [:show], constraints: {id: /\d+/} do
member do
get 'notes'
end
Loading
Loading
@@ -214,21 +214,21 @@ Gitlab::Application.routes.draw do
end
end
 
resources :deploy_keys do
resources :deploy_keys, constraints: {id: /\d+/} do
member do
put :enable
put :disable
end
end
 
resources :branches, only: [:index, :new, :create, :destroy] do
resources :branches, only: [:index, :new, :create, :destroy], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ } do
collection do
get :recent
end
end
 
resources :tags, only: [:index, :new, :create, :destroy]
resources :protected_branches, only: [:index, :create, :destroy]
resources :tags, only: [:index, :new, :create, :destroy], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ }
resources :protected_branches, only: [:index, :create, :destroy], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ }
 
resources :refs, only: [] do
collection do
Loading
Loading
@@ -262,14 +262,14 @@ Gitlab::Application.routes.draw do
end
end
 
resources :hooks, only: [:index, :create, :destroy] do
resources :hooks, only: [:index, :create, :destroy], constraints: {id: /\d+/} do
member do
get :test
end
end
 
resources :team, controller: 'team_members', only: [:index]
resources :milestones, except: [:destroy]
resources :milestones, except: [:destroy], constraints: {id: /\d+/}
 
resources :labels, only: [:index] do
collection do
Loading
Loading
@@ -283,7 +283,7 @@ Gitlab::Application.routes.draw do
end
end
 
resources :team_members, except: [:index, :edit] do
resources :team_members, except: [:index, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ } do
collection do
 
# Used for import team
Loading
Loading
@@ -293,7 +293,7 @@ Gitlab::Application.routes.draw do
end
end
 
resources :notes, only: [:index, :create, :destroy, :update] do
resources :notes, only: [:index, :create, :destroy, :update], constraints: {id: /\d+/} do
member do
delete :delete_attachment
end
Loading
Loading
Loading
Loading
@@ -57,7 +57,7 @@ class Dashboard < Spinach::FeatureSteps
 
And 'I have group with projects' do
@group = create(:group)
@project = create(:project, group: @group)
@project = create(:project, namespace: @group)
@event = create(:closed_issue_event, project: @project)
 
@project.team << [current_user, :master]
Loading
Loading
Loading
Loading
@@ -11,7 +11,7 @@ class Groups < Spinach::FeatureSteps
 
And 'I have group with projects' do
@group = create(:group, owner: current_user)
@project = create(:project, group: @group)
@project = create(:project, namespace: @group)
@event = create(:closed_issue_event, project: @project)
 
@project.team << [current_user, :master]
Loading
Loading
Loading
Loading
@@ -38,11 +38,6 @@ class ProjectNetworkGraph < Spinach::FeatureSteps
sleep 2
end
 
When 'I switch ref to "v2.1.0"' do
page.select 'v2.1.0', from: 'ref'
sleep 2
end
When 'click "Show only selected branch" checkbox' do
find('#filter_ref').click
sleep 2
Loading
Loading
Loading
Loading
@@ -4,7 +4,7 @@ module API
before { authenticate! }
before { Thread.current[:current_user] = current_user }
 
resource :projects do
resource :projects, requirements: { id: /[a-zA-Z.0-9_\-]+\/[a-zA-Z.0-9_\-]+/ } do
helpers do
def handle_merge_request_errors!(errors)
if errors[:project_access].any?
Loading
Loading
Loading
Loading
@@ -17,7 +17,7 @@ describe Projects::BlobController do
describe "GET show" do
render_views
 
before { get :show, project_id: project.code, id: id }
before { get :show, project_id: project.to_param, id: id }
 
context "valid branch, valid file" do
let(:id) { 'master/README.md' }
Loading
Loading
Loading
Loading
@@ -13,7 +13,7 @@ describe Projects::CommitController do
describe "#show" do
shared_examples "export as" do |format|
it "should generally work" do
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response).to be_success
end
Loading
Loading
@@ -21,11 +21,11 @@ describe Projects::CommitController do
it "should generate it" do
Commit.any_instance.should_receive(:"to_#{format}")
 
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
end
 
it "should render it" do
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response.body).to eq(commit.send(:"to_#{format}"))
end
Loading
Loading
@@ -33,7 +33,7 @@ describe Projects::CommitController do
it "should not escape Html" do
Commit.any_instance.stub(:"to_#{format}").and_return('HTML entities &<>" ')
 
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response.body).to_not include('&amp;')
expect(response.body).to_not include('&gt;')
Loading
Loading
@@ -47,7 +47,7 @@ describe Projects::CommitController do
let(:format) { :diff }
 
it "should really only be a git diff" do
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response.body).to start_with("diff --git")
end
Loading
Loading
@@ -58,13 +58,13 @@ describe Projects::CommitController do
let(:format) { :patch }
 
it "should really be a git email patch" do
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response.body).to start_with("From #{commit.id}")
end
 
it "should contain a git diff" do
get :show, project_id: project.code, id: commit.id, format: format
get :show, project_id: project.to_param, id: commit.id, format: format
 
expect(response.body).to match(/^diff --git/)
end
Loading
Loading
Loading
Loading
@@ -13,7 +13,7 @@ describe Projects::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", format: "atom"
get :show, project_id: project.to_param, id: "master", format: "atom"
response.should be_success
response.content_type.should == 'application/atom+xml'
end
Loading
Loading
Loading
Loading
@@ -14,7 +14,7 @@ describe Projects::MergeRequestsController do
describe "#show" do
shared_examples "export merge as" do |format|
it "should generally work" do
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response).to be_success
end
Loading
Loading
@@ -22,11 +22,11 @@ describe Projects::MergeRequestsController do
it "should generate it" do
MergeRequest.any_instance.should_receive(:"to_#{format}")
 
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
end
 
it "should render it" do
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response.body).to eq((merge_request.send(:"to_#{format}",user)).to_s)
end
Loading
Loading
@@ -34,7 +34,7 @@ describe Projects::MergeRequestsController do
it "should not escape Html" do
MergeRequest.any_instance.stub(:"to_#{format}").and_return('HTML entities &<>" ')
 
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response.body).to_not include('&amp;')
expect(response.body).to_not include('&gt;')
Loading
Loading
@@ -48,7 +48,7 @@ describe Projects::MergeRequestsController do
let(:format) { :diff }
 
it "should really only be a git diff" do
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response.body).to start_with("diff --git")
end
Loading
Loading
@@ -59,13 +59,13 @@ describe Projects::MergeRequestsController do
let(:format) { :patch }
 
it "should really be a git email patch with commit" do
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response.body[0..100]).to start_with("From #{merge_request.commits.last.id}")
end
 
it "should contain git diffs" do
get :show, project_id: project.code, id: merge_request.iid, format: format
get :show, project_id: project.to_param, id: merge_request.iid, format: format
 
expect(response.body).to match(/^diff --git/)
end
Loading
Loading
Loading
Loading
@@ -18,7 +18,7 @@ describe Projects::TreeController do
# Make sure any errors accessing the tree in our views bubble up to this spec
render_views
 
before { get :show, project_id: project.code, id: id }
before { get :show, project_id: project.to_param, id: id }
 
context "valid branch, no path" do
let(:id) { 'master' }
Loading
Loading
Loading
Loading
@@ -28,6 +28,7 @@ FactoryGirl.define do
factory :project do
sequence(:name) { |n| "project#{n}" }
path { name.downcase.gsub(/\s/, '_') }
namespace
creator
 
trait :source do
Loading
Loading
Loading
Loading
@@ -3,7 +3,7 @@ require 'spec_helper'
describe "Issues Feed" do
describe "GET /issues" do
let!(:user) { create(:user) }
let!(:project) { create(:project, namespace: user.namespace) }
let!(:project) { create(:project) }
let!(:issue) { create(:issue, author: user, project: project) }
 
before { project.team << [user, :developer] }
Loading
Loading
Loading
Loading
@@ -58,11 +58,11 @@ describe Project do
let!(:project) { create(:project) }
 
it { should validate_presence_of(:name) }
it { should validate_uniqueness_of(:name) }
it { should validate_uniqueness_of(:name).scoped_to(:namespace_id) }
it { should ensure_length_of(:name).is_within(0..255) }
 
it { should validate_presence_of(:path) }
it { should validate_uniqueness_of(:path) }
it { should validate_uniqueness_of(:path).scoped_to(:namespace_id) }
it { should ensure_length_of(:path).is_within(0..255) }
it { should ensure_length_of(:description).is_within(0..2000) }
it { should validate_presence_of(:creator) }
Loading
Loading
@@ -157,15 +157,6 @@ describe Project do
it { Project.find_with_namespace('gitlab/gitlab-ci').should == @project }
it { Project.find_with_namespace('gitlab-ci').should be_nil }
end
context 'w/o namespace' do
before do
@project = create(:project, name: 'gitlab-ci')
end
it { Project.find_with_namespace('gitlab-ci').should == @project }
it { Project.find_with_namespace('gitlab/gitlab-ci').should be_nil }
end
end
 
describe :to_param do
Loading
Loading
@@ -177,14 +168,6 @@ describe Project do
 
it { @project.to_param.should == "gitlab/gitlab-ci" }
end
context 'w/o namespace' do
before do
@project = create(:project, name: 'gitlab-ci')
end
it { @project.to_param.should == "gitlab-ci" }
end
end
 
describe :repository do
Loading
Loading
Loading
Loading
@@ -2,9 +2,10 @@ require "spec_helper"
 
describe API::API do
include ApiHelpers
before(:each) { ActiveRecord::Base.observers.enable(:user_observer) }
after(:each) { ActiveRecord::Base.observers.disable(:user_observer) }
let(:user) { create(:user) }
let!(:project) {create(:project_with_code, creator_id: user.id) }
let!(:project) {create(:project_with_code, creator_id: user.id, namespace: user.namespace) }
let!(:merge_request) { create(:merge_request, author: user, assignee: user, source_project: project, target_project: project, title: "Test") }
before {
project.team << [user, :reporters]
Loading
Loading
@@ -13,14 +14,14 @@ describe API::API do
describe "GET /projects/:id/merge_requests" do
context "when unauthenticated" do
it "should return authentication error" do
get api("/projects/#{project.id}/merge_requests")
get api("/projects/#{project.to_param}/merge_requests")
response.status.should == 401
end
end
 
context "when authenticated" do
it "should return an array of merge_requests" do
get api("/projects/#{project.id}/merge_requests", user)
get api("/projects/#{project.to_param}/merge_requests", user)
response.status.should == 200
json_response.should be_an Array
json_response.first['title'].should == merge_request.title
Loading
Loading
@@ -30,13 +31,13 @@ describe API::API do
 
describe "GET /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do
get api("/projects/#{project.id}/merge_request/#{merge_request.id}", user)
get api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user)
response.status.should == 200
json_response['title'].should == merge_request.title
end
 
it "should return a 404 error if merge_request_id not found" do
get api("/projects/#{project.id}/merge_request/999", user)
get api("/projects/#{project.to_param}/merge_request/999", user)
response.status.should == 404
end
end
Loading
Loading
@@ -44,32 +45,32 @@ describe API::API do
describe "POST /projects/:id/merge_requests" do
context 'between branches projects' do
it "should return merge_request" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
 
it "should return 422 when source_branch equals target_branch" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
response.status.should == 422
end
 
it "should return 400 when source_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
title: "Test merge_request", target_branch: "master", author: user
response.status.should == 400
end
 
it "should return 400 when target_branch is missing" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
title: "Test merge_request", source_branch: "stable", author: user
response.status.should == 400
end
 
it "should return 400 when title is missing" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
target_branch: 'master', source_branch: 'stable'
response.status.should == 400
end
Loading
Loading
@@ -89,54 +90,54 @@ describe API::API do
end
 
it "should return merge_request" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
 
it "should not return 422 when source_branch equals target_branch" do
project.id.should_not == fork_project.id
project.to_param.should_not == fork_project.to_param
fork_project.forked?.should be_true
fork_project.forked_from_project.should == project
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201
json_response['title'].should == 'Test merge_request'
end
 
it "should return 400 when source_branch is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400
end
 
it "should return 400 when target_branch is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400
end
 
it "should return 400 when title is missing" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
response.status.should == 400
end
 
it "should return 400 when target_branch is specified and not a forked project" do
post api("/projects/#{project.id}/merge_requests", user),
post api("/projects/#{project.to_param}/merge_requests", user),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
response.status.should == 400
end
 
it "should return 400 when target_branch is specified and for a different fork" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
response.status.should == 400
end
 
it "should return 201 when target_branch is specified and for the same project" do
post api("/projects/#{fork_project.id}/merge_requests", user2),
post api("/projects/#{fork_project.to_param}/merge_requests", user2),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
response.status.should == 201
end
Loading
Loading
@@ -145,7 +146,7 @@ describe API::API do
 
describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do
it "should return merge_request" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "close"
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "close"
response.status.should == 200
json_response['state'].should == 'closed'
end
Loading
Loading
@@ -153,7 +154,7 @@ describe API::API do
 
describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
it "should return merge_request" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "merge"
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "merge"
response.status.should == 200
json_response['state'].should == 'merged'
end
Loading
Loading
@@ -161,19 +162,19 @@ describe API::API do
 
describe "PUT /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title"
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), title: "New title"
response.status.should == 200
json_response['title'].should == 'New title'
end
 
it "should return 422 when source_branch and target_branch are renamed the same" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user),
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user),
source_branch: "master", target_branch: "master"
response.status.should == 422
end
 
it "should return merge_request with renamed target_branch" do
put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), target_branch: "wiki"
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), target_branch: "wiki"
response.status.should == 200
json_response['target_branch'].should == 'wiki'
end
Loading
Loading
@@ -181,18 +182,18 @@ describe API::API do
 
describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
it "should return comment" do
post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
response.status.should == 201
json_response['note'].should == 'My comment'
end
 
it "should return 400 if note is missing" do
post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user)
post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user)
response.status.should == 400
end
 
it "should return 404 if note is attached to non existent merge request" do
post api("/projects/#{project.id}/merge_request/111/comments", user), note: "My comment"
post api("/projects/#{project.to_param}/merge_request/111/comments", user), note: "My comment"
response.status.should == 404
end
end
Loading
Loading
This diff is collapsed.
Loading
Loading
@@ -11,11 +11,11 @@ end
# /:path Grack
describe "Mounted Apps", "routing" do
it "to API" do
get("/api").should be_routable
get("/api/issues").should be_routable
end
 
it "to Grack" do
get("/gitlabhq.git").should be_routable
get("/gitlab/gitlabhq.git").should be_routable
end
end
 
Loading
Loading
Loading
Loading
@@ -48,7 +48,7 @@ describe GitPushService do
it { should include(id: @commit.id) }
it { should include(message: @commit.safe_message) }
it { should include(timestamp: @commit.date.xmlschema) }
it { should include(url: "#{Gitlab.config.gitlab.url}/#{project.code}/commit/#{@commit.id}") }
it { should include(url: "#{Gitlab.config.gitlab.url}/#{project.to_param}/commit/#{@commit.id}") }
 
context "with a author" do
subject { @push_data[:commits].first[:author] }
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment