Fix API::MergeRequest

Fixes #5144 Refs #4996
This commit is contained in:
Hiroyuki Sato 2013-09-22 06:46:36 +09:00
parent 5367e42bd6
commit d426195df8
2 changed files with 27 additions and 27 deletions

View File

@ -4,7 +4,7 @@ module API
before { authenticate! } before { authenticate! }
before { Thread.current[:current_user] = current_user } before { Thread.current[:current_user] = current_user }
resource :projects, requirements: { id: /[a-zA-Z.0-9_\-]+\/[a-zA-Z.0-9_\-]+/ } do resource :projects do
helpers do helpers do
def handle_merge_request_errors!(errors) def handle_merge_request_errors!(errors)
if errors[:project_access].any? if errors[:project_access].any?

View File

@ -14,14 +14,14 @@ describe API::API do
describe "GET /projects/:id/merge_requests" do describe "GET /projects/:id/merge_requests" do
context "when unauthenticated" do context "when unauthenticated" do
it "should return authentication error" do it "should return authentication error" do
get api("/projects/#{project.to_param}/merge_requests") get api("/projects/#{project.id}/merge_requests")
response.status.should == 401 response.status.should == 401
end end
end end
context "when authenticated" do context "when authenticated" do
it "should return an array of merge_requests" do it "should return an array of merge_requests" do
get api("/projects/#{project.to_param}/merge_requests", user) get api("/projects/#{project.id}/merge_requests", user)
response.status.should == 200 response.status.should == 200
json_response.should be_an Array json_response.should be_an Array
json_response.first['title'].should == merge_request.title json_response.first['title'].should == merge_request.title
@ -31,13 +31,13 @@ describe API::API do
describe "GET /projects/:id/merge_request/:merge_request_id" do describe "GET /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do it "should return merge_request" do
get api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user) get api("/projects/#{project.id}/merge_request/#{merge_request.id}", user)
response.status.should == 200 response.status.should == 200
json_response['title'].should == merge_request.title json_response['title'].should == merge_request.title
end end
it "should return a 404 error if merge_request_id not found" do it "should return a 404 error if merge_request_id not found" do
get api("/projects/#{project.to_param}/merge_request/999", user) get api("/projects/#{project.id}/merge_request/999", user)
response.status.should == 404 response.status.should == 404
end end
end end
@ -45,32 +45,32 @@ describe API::API do
describe "POST /projects/:id/merge_requests" do describe "POST /projects/:id/merge_requests" do
context 'between branches projects' do context 'between branches projects' do
it "should return merge_request" do it "should return merge_request" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
response.status.should == 201 response.status.should == 201
json_response['title'].should == 'Test merge_request' json_response['title'].should == 'Test merge_request'
end end
it "should return 422 when source_branch equals target_branch" do it "should return 422 when source_branch equals target_branch" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
title: "Test merge_request", source_branch: "master", target_branch: "master", author: user title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
response.status.should == 422 response.status.should == 422
end end
it "should return 400 when source_branch is missing" do it "should return 400 when source_branch is missing" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
title: "Test merge_request", target_branch: "master", author: user title: "Test merge_request", target_branch: "master", author: user
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when target_branch is missing" do it "should return 400 when target_branch is missing" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
title: "Test merge_request", source_branch: "stable", author: user title: "Test merge_request", source_branch: "stable", author: user
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when title is missing" do it "should return 400 when title is missing" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
target_branch: 'master', source_branch: 'stable' target_branch: 'master', source_branch: 'stable'
response.status.should == 400 response.status.should == 400
end end
@ -90,54 +90,54 @@ describe API::API do
end end
it "should return merge_request" do it "should return merge_request" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201 response.status.should == 201
json_response['title'].should == 'Test merge_request' json_response['title'].should == 'Test merge_request'
end end
it "should not return 422 when source_branch equals target_branch" do it "should not return 422 when source_branch equals target_branch" do
project.to_param.should_not == fork_project.to_param project.id.should_not == fork_project.id
fork_project.forked?.should be_true fork_project.forked?.should be_true
fork_project.forked_from_project.should == project fork_project.forked_from_project.should == project
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 201 response.status.should == 201
json_response['title'].should == 'Test merge_request' json_response['title'].should == 'Test merge_request'
end end
it "should return 400 when source_branch is missing" do it "should return 400 when source_branch is missing" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when target_branch is missing" do it "should return 400 when target_branch is missing" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when title is missing" do it "should return 400 when title is missing" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when target_branch is specified and not a forked project" do it "should return 400 when target_branch is specified and not a forked project" do
post api("/projects/#{project.to_param}/merge_requests", user), post api("/projects/#{project.id}/merge_requests", user),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
response.status.should == 400 response.status.should == 400
end end
it "should return 400 when target_branch is specified and for a different fork" do it "should return 400 when target_branch is specified and for a different fork" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
response.status.should == 400 response.status.should == 400
end end
it "should return 201 when target_branch is specified and for the same project" do it "should return 201 when target_branch is specified and for the same project" do
post api("/projects/#{fork_project.to_param}/merge_requests", user2), post api("/projects/#{fork_project.id}/merge_requests", user2),
title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
response.status.should == 201 response.status.should == 201
end end
@ -146,7 +146,7 @@ describe API::API do
describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do
it "should return merge_request" do it "should return merge_request" do
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "close" put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "close"
response.status.should == 200 response.status.should == 200
json_response['state'].should == 'closed' json_response['state'].should == 'closed'
end end
@ -154,7 +154,7 @@ describe API::API do
describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
it "should return merge_request" do it "should return merge_request" do
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "merge" put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "merge"
response.status.should == 200 response.status.should == 200
json_response['state'].should == 'merged' json_response['state'].should == 'merged'
end end
@ -162,19 +162,19 @@ describe API::API do
describe "PUT /projects/:id/merge_request/:merge_request_id" do describe "PUT /projects/:id/merge_request/:merge_request_id" do
it "should return merge_request" do it "should return merge_request" do
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), title: "New title" put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title"
response.status.should == 200 response.status.should == 200
json_response['title'].should == 'New title' json_response['title'].should == 'New title'
end end
it "should return 422 when source_branch and target_branch are renamed the same" do it "should return 422 when source_branch and target_branch are renamed the same" do
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user),
source_branch: "master", target_branch: "master" source_branch: "master", target_branch: "master"
response.status.should == 422 response.status.should == 422
end end
it "should return merge_request with renamed target_branch" do it "should return merge_request with renamed target_branch" do
put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), target_branch: "wiki" put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), target_branch: "wiki"
response.status.should == 200 response.status.should == 200
json_response['target_branch'].should == 'wiki' json_response['target_branch'].should == 'wiki'
end end
@ -182,18 +182,18 @@ describe API::API do
describe "POST /projects/:id/merge_request/:merge_request_id/comments" do describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
it "should return comment" do it "should return comment" do
post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user), note: "My comment" post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
response.status.should == 201 response.status.should == 201
json_response['note'].should == 'My comment' json_response['note'].should == 'My comment'
end end
it "should return 400 if note is missing" do it "should return 400 if note is missing" do
post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user) post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user)
response.status.should == 400 response.status.should == 400
end end
it "should return 404 if note is attached to non existent merge request" do it "should return 404 if note is attached to non existent merge request" do
post api("/projects/#{project.to_param}/merge_request/111/comments", user), note: "My comment" post api("/projects/#{project.id}/merge_request/111/comments", user), note: "My comment"
response.status.should == 404 response.status.should == 404
end end
end end