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 4 before { authenticate! }
5 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 8 helpers do
9 9 def handle_merge_request_errors!(errors)
10 10 if errors[:project_access].any?
... ...
spec/requests/api/merge_requests_spec.rb
... ... @@ -14,14 +14,14 @@ describe API::API do
14 14 describe "GET /projects/:id/merge_requests" do
15 15 context "when unauthenticated" do
16 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 18 response.status.should == 401
19 19 end
20 20 end
21 21  
22 22 context "when authenticated" do
23 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 25 response.status.should == 200
26 26 json_response.should be_an Array
27 27 json_response.first['title'].should == merge_request.title
... ... @@ -31,13 +31,13 @@ describe API::API do
31 31  
32 32 describe "GET /projects/:id/merge_request/:merge_request_id" do
33 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 35 response.status.should == 200
36 36 json_response['title'].should == merge_request.title
37 37 end
38 38  
39 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 41 response.status.should == 404
42 42 end
43 43 end
... ... @@ -45,32 +45,32 @@ describe API::API do
45 45 describe "POST /projects/:id/merge_requests" do
46 46 context 'between branches projects' do
47 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 49 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user
50 50 response.status.should == 201
51 51 json_response['title'].should == 'Test merge_request'
52 52 end
53 53  
54 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 56 title: "Test merge_request", source_branch: "master", target_branch: "master", author: user
57 57 response.status.should == 422
58 58 end
59 59  
60 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 62 title: "Test merge_request", target_branch: "master", author: user
63 63 response.status.should == 400
64 64 end
65 65  
66 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 68 title: "Test merge_request", source_branch: "stable", author: user
69 69 response.status.should == 400
70 70 end
71 71  
72 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 74 target_branch: 'master', source_branch: 'stable'
75 75 response.status.should == 400
76 76 end
... ... @@ -90,54 +90,54 @@ describe API::API do
90 90 end
91 91  
92 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 94 title: 'Test merge_request', source_branch: "stable", target_branch: "master", author: user2, target_project_id: project.id
95 95 response.status.should == 201
96 96 json_response['title'].should == 'Test merge_request'
97 97 end
98 98  
99 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 101 fork_project.forked?.should be_true
102 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 104 title: 'Test merge_request', source_branch: "master", target_branch: "master", author: user2, target_project_id: project.id
105 105 response.status.should == 201
106 106 json_response['title'].should == 'Test merge_request'
107 107 end
108 108  
109 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 111 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
112 112 response.status.should == 400
113 113 end
114 114  
115 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 117 title: 'Test merge_request', target_branch: "master", author: user2, target_project_id: project.id
118 118 response.status.should == 400
119 119 end
120 120  
121 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 123 target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: project.id
124 124 response.status.should == 400
125 125 end
126 126  
127 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 129 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user, target_project_id: fork_project.id
130 130 response.status.should == 400
131 131 end
132 132  
133 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 135 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: unrelated_project.id
136 136 response.status.should == 400
137 137 end
138 138  
139 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 141 title: 'Test merge_request', target_branch: 'master', source_branch: 'stable', author: user2, target_project_id: fork_project.id
142 142 response.status.should == 201
143 143 end
... ... @@ -146,7 +146,7 @@ describe API::API do
146 146  
147 147 describe "PUT /projects/:id/merge_request/:merge_request_id to close MR" do
148 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 150 response.status.should == 200
151 151 json_response['state'].should == 'closed'
152 152 end
... ... @@ -154,7 +154,7 @@ describe API::API do
154 154  
155 155 describe "PUT /projects/:id/merge_request/:merge_request_id to merge MR" do
156 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 158 response.status.should == 200
159 159 json_response['state'].should == 'merged'
160 160 end
... ... @@ -162,19 +162,19 @@ describe API::API do
162 162  
163 163 describe "PUT /projects/:id/merge_request/:merge_request_id" do
164 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 166 response.status.should == 200
167 167 json_response['title'].should == 'New title'
168 168 end
169 169  
170 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 172 source_branch: "master", target_branch: "master"
173 173 response.status.should == 422
174 174 end
175 175  
176 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 178 response.status.should == 200
179 179 json_response['target_branch'].should == 'wiki'
180 180 end
... ... @@ -182,18 +182,18 @@ describe API::API do
182 182  
183 183 describe "POST /projects/:id/merge_request/:merge_request_id/comments" do
184 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 186 response.status.should == 201
187 187 json_response['note'].should == 'My comment'
188 188 end
189 189  
190 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 192 response.status.should == 400
193 193 end
194 194  
195 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 197 response.status.should == 404
198 198 end
199 199 end
... ...