summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Duncalfe <lduncalfe@eml.cc>2019-04-08 21:59:12 +1200
committerLuke Duncalfe <lduncalfe@eml.cc>2019-04-09 10:57:04 +1200
commit3c40c98e263328ceb11a008dbec108362e727dbc (patch)
treeaffc98567eed0823cf1d9d6b8b9676c330687056
parente73f537cb5097e85849110bafe184cb89e3bbc22 (diff)
downloadgitlab-ce-3c40c98e263328ceb11a008dbec108362e727dbc.tar.gz
Feature flag for merge requestion push options
https://gitlab.com/gitlab-org/gitlab-ce/issues/43263 https://gitlab.com/gitlab-org/gitlab-ce/issues/53198
-rw-r--r--lib/api/internal.rb6
-rw-r--r--spec/requests/api/internal_spec.rb14
2 files changed, 18 insertions, 2 deletions
diff --git a/lib/api/internal.rb b/lib/api/internal.rb
index 224aaaaf006..00f0bbab231 100644
--- a/lib/api/internal.rb
+++ b/lib/api/internal.rb
@@ -264,8 +264,10 @@ module API
PostReceive.perform_async(params[:gl_repository], params[:identifier],
params[:changes], push_options.as_json)
- mr_options = push_options.get(:merge_request)
- output.merge!(process_mr_push_options(mr_options, project, user, params[:changes])) if mr_options.present?
+ if Feature.enabled?(:mr_push_options, default_enabled: true)
+ mr_options = push_options.get(:merge_request)
+ output.merge!(process_mr_push_options(mr_options, project, user, params[:changes])) if mr_options.present?
+ end
broadcast_message = BroadcastMessage.current&.last&.message
reference_counter_decreased = Gitlab::ReferenceCounter.new(params[:gl_repository]).decrease
diff --git a/spec/requests/api/internal_spec.rb b/spec/requests/api/internal_spec.rb
index 26645ff0a44..1ce8f520962 100644
--- a/spec/requests/api/internal_spec.rb
+++ b/spec/requests/api/internal_spec.rb
@@ -995,6 +995,20 @@ describe API::Internal do
expect(json_response['warnings']).to eq('Error encountered with push options \'merge_request.create\': my error')
end
+
+ context 'when the feature is disabled' do
+ it 'does not invoke MergeRequests::PushOptionsHandlerService' do
+ Feature.disable(:mr_push_options)
+
+ expect(MergeRequests::PushOptionsHandlerService).to receive(:new)
+
+ expect do
+ post api('/internal/post_receive'), params: valid_params
+ end.not_to change { MergeRequest.count }
+
+ Feature.enable(:mr_push_options)
+ end
+ end
end
context 'broadcast message exists' do