summaryrefslogtreecommitdiff
path: root/spec/requests/api/merge_requests_spec.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2019-02-27 10:59:06 +0000
committerDouwe Maan <douwe@gitlab.com>2019-02-27 10:59:06 +0000
commit7ebe264779b5ef6db61afca836774ecb5a3fcbfc (patch)
treececf38c19aff561862667503206c52ca6c9946c8 /spec/requests/api/merge_requests_spec.rb
parent8cfbe8ab71fcef351a5b40852d7dd66acdd66531 (diff)
parente8fbc070e01b0c527c66d803f9be813b4c2cdc0a (diff)
downloadgitlab-ce-7ebe264779b5ef6db61afca836774ecb5a3fcbfc.tar.gz
Merge branch 'osw-merge-refs-refreshing-api' into 'master'
API support for MR merge to temporary merge ref path Closes #57252 See merge request gitlab-org/gitlab-ce!24918
Diffstat (limited to 'spec/requests/api/merge_requests_spec.rb')
-rw-r--r--spec/requests/api/merge_requests_spec.rb61
1 files changed, 61 insertions, 0 deletions
diff --git a/spec/requests/api/merge_requests_spec.rb b/spec/requests/api/merge_requests_spec.rb
index 8aba0bc8e18..6272bb38d59 100644
--- a/spec/requests/api/merge_requests_spec.rb
+++ b/spec/requests/api/merge_requests_spec.rb
@@ -1013,6 +1013,67 @@ describe API::MergeRequests do
end
end
+ describe "PUT /projects/:id/merge_requests/:merge_request_iid/merge_to_ref" do
+ let(:pipeline) { create(:ci_pipeline_without_jobs) }
+ let(:url) do
+ "/projects/#{project.id}/merge_requests/#{merge_request.iid}/merge_to_ref"
+ end
+
+ it 'returns the generated ID from the merge service in case of success' do
+ put api(url, user), params: { merge_commit_message: 'Custom message' }
+
+ commit = project.commit(json_response['commit_id'])
+
+ expect(response).to have_gitlab_http_status(200)
+ expect(json_response['commit_id']).to be_present
+ expect(commit.message).to eq('Custom message')
+ end
+
+ it "returns 400 if branch can't be merged" do
+ merge_request.update!(state: 'merged')
+
+ put api(url, user)
+
+ expect(response).to have_gitlab_http_status(400)
+ expect(json_response['message'])
+ .to eq("Merge request is not mergeable to #{merge_request.merge_ref_path}")
+ end
+
+ it 'returns 403 if user has no permissions to merge to the ref' do
+ user2 = create(:user)
+ project.add_reporter(user2)
+
+ put api(url, user2)
+
+ expect(response).to have_gitlab_http_status(403)
+ expect(json_response['message']).to eq('403 Forbidden')
+ end
+
+ it 'returns 404 for an invalid merge request IID' do
+ put api("/projects/#{project.id}/merge_requests/12345/merge_to_ref", user)
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+
+ it "returns 404 if the merge request id is used instead of iid" do
+ put api("/projects/#{project.id}/merge_requests/#{merge_request.id}/merge", user)
+
+ expect(response).to have_gitlab_http_status(404)
+ end
+
+ it "returns 400 when merge method is not supported" do
+ merge_request.project.update!(merge_method: 'ff')
+
+ put api(url, user)
+
+ expected_error =
+ 'Fast-forward to refs/merge-requests/1/merge is currently not supported.'
+
+ expect(response).to have_gitlab_http_status(400)
+ expect(json_response['message']).to eq(expected_error)
+ end
+ end
+
describe "PUT /projects/:id/merge_requests/:merge_request_iid" do
context "to close a MR" do
it "returns merge_request" do