Commit d426195df876ad6d76e6d79d3031e8da95fb532a

Authored by Hiroyuki Sato
1 parent 5367e42b

Fix API::MergeRequest

Fixes #5144 Refs #4996
lib/api/merge_requests.rb
@@ -4,7 +4,7 @@ module API @@ -4,7 +4,7 @@ module API
4 before { authenticate! } 4 before { authenticate! }
5 before { Thread.current[:current_user] = current_user } 5 before { Thread.current[:current_user] = current_user }
6 6
7 - resource :projects, requirements: { id: /[a-zA-Z.0-9_\-]+\/[a-zA-Z.0-9_\-]+/ } do 7 + resource :projects do
8 helpers do 8 helpers do
9 def handle_merge_request_errors!(errors) 9 def handle_merge_request_errors!(errors)
10 if errors[:project_access].any? 10 if errors[:project_access].any?
spec/requests/api/merge_requests_spec.rb
@@ -14,14 +14,14 @@ describe API::API do @@ -14,14 +14,14 @@ describe API::API do
14 describe "GET /projects/:id/merge_requests" do 14 describe "GET /projects/:id/merge_requests" do
15 context "when unauthenticated" do 15 context "when unauthenticated" do
16 it "should return authentication error" do 16 it "should return authentication error" do
17 - get api("/projects/#{project.to_param}/merge_requests") 17 + get api("/projects/#{project.id}/merge_requests")
18 response.status.should == 401 18 response.status.should == 401
19 end 19 end
20 end 20 end
21 21
22 context "when authenticated" do 22 context "when authenticated" do
23 it "should return an array of merge_requests" do 23 it "should return an array of merge_requests" do
24 - get api("/projects/#{project.to_param}/merge_requests", user) 24 + get api("/projects/#{project.id}/merge_requests", user)
25 response.status.should == 200 25 response.status.should == 200
26 json_response.should be_an Array 26 json_response.should be_an Array
27 json_response.first['title'].should == merge_request.title 27 json_response.first['title'].should == merge_request.title
@@ -31,13 +31,13 @@ describe API::API do @@ -31,13 +31,13 @@ describe API::API do
31 31
32 describe "GET /projects/:id/merge_request/:merge_request_id" do 32 describe "GET /projects/:id/merge_request/:merge_request_id" do
33 it "should return merge_request" do 33 it "should return merge_request" do
34 - get api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user) 34 + get api("/projects/#{project.id}/merge_request/#{merge_request.id}", user)
35 response.status.should == 200 35 response.status.should == 200
36 json_response['title'].should == merge_request.title 36 json_response['title'].should == merge_request.title
37 end 37 end
38 38
39 it "should return a 404 error if merge_request_id not found" do 39 it "should return a 404 error if merge_request_id not found" do
40 - get api("/projects/#{project.to_param}/merge_request/999", user) 40 + get api("/projects/#{project.id}/merge_request/999", user)
41 response.status.should == 404 41 response.status.should == 404
42 end 42 end
43 end 43 end
@@ -45,32 +45,32 @@ describe API::API do @@ -45,32 +45,32 @@ describe API::API do
45 describe "POST /projects/:id/merge_requests" do 45 describe "POST /projects/:id/merge_requests" do
46 context 'between branches projects' do 46 context 'between branches projects' do
47 it "should return merge_request" do 47 it "should return merge_request" do
48 - post api("/projects/#{project.to_param}/merge_requests", user), 48 + post api("/projects/#{project.id}/merge_requests", user),
49 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user 49 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
50 response.status.should == 201 50 response.status.should == 201
51 json_response['title'].should == 'Test merge_request' 51 json_response['title'].should == 'Test merge_request'
52 end 52 end
53 53
54 it "should return 422 when source_branch equals target_branch" do 54 it "should return 422 when source_branch equals target_branch" do
55 - post api("/projects/#{project.to_param}/merge_requests", user), 55 + post api("/projects/#{project.id}/merge_requests", user),
56 title: "Test merge_request", source_branch: "master", target_branch: "master", author: user 56 title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
57 response.status.should == 422 57 response.status.should == 422
58 end 58 end
59 59
60 it "should return 400 when source_branch is missing" do 60 it "should return 400 when source_branch is missing" do
61 - post api("/projects/#{project.to_param}/merge_requests", user), 61 + post api("/projects/#{project.id}/merge_requests", user),
62 title: "Test merge_request", target_branch: "master", author: user 62 title: "Test merge_request", target_branch: "master", author: user
63 response.status.should == 400 63 response.status.should == 400
64 end 64 end
65 65
66 it "should return 400 when target_branch is missing" do 66 it "should return 400 when target_branch is missing" do
67 - post api("/projects/#{project.to_param}/merge_requests", user), 67 + post api("/projects/#{project.id}/merge_requests", user),
68 title: "Test merge_request", source_branch: "stable", author: user 68 title: "Test merge_request", source_branch: "stable", author: user
69 response.status.should == 400 69 response.status.should == 400
70 end 70 end
71 71
72 it "should return 400 when title is missing" do 72 it "should return 400 when title is missing" do
73 - post api("/projects/#{project.to_param}/merge_requests", user), 73 + post api("/projects/#{project.id}/merge_requests", user),
74 target_branch: 'master', source_branch: 'stable' 74 target_branch: 'master', source_branch: 'stable'
75 response.status.should == 400 75 response.status.should == 400
76 end 76 end
@@ -90,54 +90,54 @@ describe API::API do @@ -90,54 +90,54 @@ describe API::API do
90 end 90 end
91 91
92 it "should return merge_request" do 92 it "should return merge_request" do
93 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 93 + post api("/projects/#{fork_project.id}/merge_requests", user2),
94 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id 94 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
95 response.status.should == 201 95 response.status.should == 201
96 json_response['title'].should == 'Test merge_request' 96 json_response['title'].should == 'Test merge_request'
97 end 97 end
98 98
99 it "should not return 422 when source_branch equals target_branch" do 99 it "should not return 422 when source_branch equals target_branch" do
100 - project.to_param.should_not == fork_project.to_param 100 + project.id.should_not == fork_project.id
101 fork_project.forked?.should be_true 101 fork_project.forked?.should be_true
102 fork_project.forked_from_project.should == project 102 fork_project.forked_from_project.should == project
103 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 103 + post api("/projects/#{fork_project.id}/merge_requests", user2),
104 title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id 104 title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
105 response.status.should == 201 105 response.status.should == 201
106 json_response['title'].should == 'Test merge_request' 106 json_response['title'].should == 'Test merge_request'
107 end 107 end
108 108
109 it "should return 400 when source_branch is missing" do 109 it "should return 400 when source_branch is missing" do
110 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 110 + post api("/projects/#{fork_project.id}/merge_requests", user2),
111 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id 111 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
112 response.status.should == 400 112 response.status.should == 400
113 end 113 end
114 114
115 it "should return 400 when target_branch is missing" do 115 it "should return 400 when target_branch is missing" do
116 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 116 + post api("/projects/#{fork_project.id}/merge_requests", user2),
117 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id 117 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
118 response.status.should == 400 118 response.status.should == 400
119 end 119 end
120 120
121 it "should return 400 when title is missing" do 121 it "should return 400 when title is missing" do
122 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 122 + post api("/projects/#{fork_project.id}/merge_requests", user2),
123 target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id 123 target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
124 response.status.should == 400 124 response.status.should == 400
125 end 125 end
126 126
127 it "should return 400 when target_branch is specified and not a forked project" do 127 it "should return 400 when target_branch is specified and not a forked project" do
128 - post api("/projects/#{project.to_param}/merge_requests", user), 128 + post api("/projects/#{project.id}/merge_requests", user),
129 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id 129 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
130 response.status.should == 400 130 response.status.should == 400
131 end 131 end
132 132
133 it "should return 400 when target_branch is specified and for a different fork" do 133 it "should return 400 when target_branch is specified and for a different fork" do
134 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 134 + post api("/projects/#{fork_project.id}/merge_requests", user2),
135 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id 135 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
136 response.status.should == 400 136 response.status.should == 400
137 end 137 end
138 138
139 it "should return 201 when target_branch is specified and for the same project" do 139 it "should return 201 when target_branch is specified and for the same project" do
140 - post api("/projects/#{fork_project.to_param}/merge_requests", user2), 140 + post api("/projects/#{fork_project.id}/merge_requests", user2),
141 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id 141 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
142 response.status.should == 201 142 response.status.should == 201
143 end 143 end
@@ -146,7 +146,7 @@ describe API::API do @@ -146,7 +146,7 @@ describe API::API do
146 146
147 describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do 147 describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do
148 it "should return merge_request" do 148 it "should return merge_request" do
149 - put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "close" 149 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "close"
150 response.status.should == 200 150 response.status.should == 200
151 json_response['state'].should == 'closed' 151 json_response['state'].should == 'closed'
152 end 152 end
@@ -154,7 +154,7 @@ describe API::API do @@ -154,7 +154,7 @@ describe API::API do
154 154
155 describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do 155 describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
156 it "should return merge_request" do 156 it "should return merge_request" do
157 - put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), state_event: "merge" 157 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), state_event: "merge"
158 response.status.should == 200 158 response.status.should == 200
159 json_response['state'].should == 'merged' 159 json_response['state'].should == 'merged'
160 end 160 end
@@ -162,19 +162,19 @@ describe API::API do @@ -162,19 +162,19 @@ describe API::API do
162 162
163 describe "PUT /projects/:id/merge_request/:merge_request_id" do 163 describe "PUT /projects/:id/merge_request/:merge_request_id" do
164 it "should return merge_request" do 164 it "should return merge_request" do
165 - put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), title: "New title" 165 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), title: "New title"
166 response.status.should == 200 166 response.status.should == 200
167 json_response['title'].should == 'New title' 167 json_response['title'].should == 'New title'
168 end 168 end
169 169
170 it "should return 422 when source_branch and target_branch are renamed the same" do 170 it "should return 422 when source_branch and target_branch are renamed the same" do
171 - put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), 171 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user),
172 source_branch: "master", target_branch: "master" 172 source_branch: "master", target_branch: "master"
173 response.status.should == 422 173 response.status.should == 422
174 end 174 end
175 175
176 it "should return merge_request with renamed target_branch" do 176 it "should return merge_request with renamed target_branch" do
177 - put api("/projects/#{project.to_param}/merge_request/#{merge_request.id}", user), target_branch: "wiki" 177 + put api("/projects/#{project.id}/merge_request/#{merge_request.id}", user), target_branch: "wiki"
178 response.status.should == 200 178 response.status.should == 200
179 json_response['target_branch'].should == 'wiki' 179 json_response['target_branch'].should == 'wiki'
180 end 180 end
@@ -182,18 +182,18 @@ describe API::API do @@ -182,18 +182,18 @@ describe API::API do
182 182
183 describe "POST /projects/:id/merge_request/:merge_request_id/comments" do 183 describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
184 it "should return comment" do 184 it "should return comment" do
185 - post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user), note: "My comment" 185 + post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user), note: "My comment"
186 response.status.should == 201 186 response.status.should == 201
187 json_response['note'].should == 'My comment' 187 json_response['note'].should == 'My comment'
188 end 188 end
189 189
190 it "should return 400 if note is missing" do 190 it "should return 400 if note is missing" do
191 - post api("/projects/#{project.to_param}/merge_request/#{merge_request.id}/comments", user) 191 + post api("/projects/#{project.id}/merge_request/#{merge_request.id}/comments", user)
192 response.status.should == 400 192 response.status.should == 400
193 end 193 end
194 194
195 it "should return 404 if note is attached to non existent merge request" do 195 it "should return 404 if note is attached to non existent merge request" do
196 - post api("/projects/#{project.to_param}/merge_request/111/comments", user), note: "My comment" 196 + post api("/projects/#{project.id}/merge_request/111/comments", user), note: "My comment"
197 response.status.should == 404 197 response.status.should == 404
198 end 198 end
199 end 199 end