Skip to content

Commit c472017

Browse files
committed
Fix API bug accepting wrong merge requests parameters
1 parent 43e1481 commit c472017

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

changelogs/unreleased/issue_33205.yml

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Fix API bug accepting wrong parameter to create merge request
3+
merge_request:
4+
author:

lib/api/merge_requests.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ def find_merge_requests(args = {})
9797
authorize! :create_merge_request, user_project
9898

9999
mr_params = declared_params(include_missing: false)
100-
mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch) if mr_params[:remove_source_branch].present?
100+
mr_params[:force_remove_source_branch] = mr_params.delete(:remove_source_branch)
101101

102102
merge_request = ::MergeRequests::CreateService.new(user_project, current_user, mr_params).execute
103103

spec/requests/api/merge_requests_spec.rb

+23-3
Original file line numberDiff line numberDiff line change
@@ -334,14 +334,13 @@
334334
target_branch: 'master',
335335
author: user,
336336
labels: 'label, label2',
337-
milestone_id: milestone.id,
338-
remove_source_branch: true
337+
milestone_id: milestone.id
339338

340339
expect(response).to have_http_status(201)
341340
expect(json_response['title']).to eq('Test merge_request')
342341
expect(json_response['labels']).to eq(%w(label label2))
343342
expect(json_response['milestone']['id']).to eq(milestone.id)
344-
expect(json_response['force_remove_source_branch']).to be_truthy
343+
expect(json_response['force_remove_source_branch']).to be_falsy
345344
end
346345

347346
it "returns 422 when source_branch equals target_branch" do
@@ -404,6 +403,27 @@
404403
expect(response).to have_http_status(409)
405404
end
406405
end
406+
407+
context 'accepts remove_source_branch parameter' do
408+
let(:params) do
409+
{ title: 'Test merge_request',
410+
source_branch: 'markdown',
411+
target_branch: 'master',
412+
author: user }
413+
end
414+
415+
it 'sets force_remove_source_branch to false' do
416+
post api("/projects/#{project.id}/merge_requests", user), params.merge(remove_source_branch: false)
417+
418+
expect(json_response['force_remove_source_branch']).to be_falsy
419+
end
420+
421+
it 'sets force_remove_source_branch to true' do
422+
post api("/projects/#{project.id}/merge_requests", user), params.merge(remove_source_branch: true)
423+
424+
expect(json_response['force_remove_source_branch']).to be_truthy
425+
end
426+
end
407427
end
408428

409429
context 'forked projects' do

0 commit comments

Comments
 (0)