Commit 2ce66c07 authored by Robert Schilling's avatar Robert Schilling

API: Expose branch status

parent 060ec3d7
---
title: 'API: Expose merge status for branch API'
merge_request:
author: Robert Schilling
...@@ -22,6 +22,7 @@ Example response: ...@@ -22,6 +22,7 @@ Example response:
[ [
{ {
"name": "master", "name": "master",
"merged": false,
"protected": true, "protected": true,
"developers_can_push": false, "developers_can_push": false,
"developers_can_merge": false, "developers_can_merge": false,
...@@ -65,6 +66,7 @@ Example response: ...@@ -65,6 +66,7 @@ Example response:
```json ```json
{ {
"name": "master", "name": "master",
"merged": false,
"protected": true, "protected": true,
"developers_can_push": false, "developers_can_push": false,
"developers_can_merge": false, "developers_can_merge": false,
...@@ -123,6 +125,7 @@ Example response: ...@@ -123,6 +125,7 @@ Example response:
] ]
}, },
"name": "master", "name": "master",
"merged": false,
"protected": true, "protected": true,
"developers_can_push": true, "developers_can_push": true,
"developers_can_merge": true "developers_can_merge": true
...@@ -166,6 +169,7 @@ Example response: ...@@ -166,6 +169,7 @@ Example response:
] ]
}, },
"name": "master", "name": "master",
"merged": false,
"protected": false, "protected": false,
"developers_can_push": false, "developers_can_push": false,
"developers_can_merge": false "developers_can_merge": false
...@@ -206,6 +210,7 @@ Example response: ...@@ -206,6 +210,7 @@ Example response:
] ]
}, },
"name": "newbranch", "name": "newbranch",
"merged": false,
"protected": false, "protected": false,
"developers_can_push": false, "developers_can_push": false,
"developers_can_merge": false "developers_can_merge": false
......
...@@ -141,8 +141,12 @@ module API ...@@ -141,8 +141,12 @@ module API
options[:project].repository.commit(repo_branch.dereferenced_target) options[:project].repository.commit(repo_branch.dereferenced_target)
end end
expose :merged do |repo_branch, options|
options[:project].repository.merged_to_root_ref?(repo_branch.name)
end
expose :protected do |repo_branch, options| expose :protected do |repo_branch, options|
options[:project].protected_branch? repo_branch.name options[:project].protected_branch?(repo_branch.name)
end end
expose :developers_can_push do |repo_branch, options| expose :developers_can_push do |repo_branch, options|
......
...@@ -31,11 +31,22 @@ describe API::API, api: true do ...@@ -31,11 +31,22 @@ describe API::API, api: true do
expect(json_response['name']).to eq(branch_name) expect(json_response['name']).to eq(branch_name)
expect(json_response['commit']['id']).to eq(branch_sha) expect(json_response['commit']['id']).to eq(branch_sha)
expect(json_response['merged']).to eq(false)
expect(json_response['protected']).to eq(false) expect(json_response['protected']).to eq(false)
expect(json_response['developers_can_push']).to eq(false) expect(json_response['developers_can_push']).to eq(false)
expect(json_response['developers_can_merge']).to eq(false) expect(json_response['developers_can_merge']).to eq(false)
end end
context 'on a merged branch' do
it "returns the branch information for a single branch" do
get api("/projects/#{project.id}/repository/branches/merge-test", user)
expect(response).to have_http_status(200)
expect(json_response['name']).to eq('merge-test')
expect(json_response['merged']).to eq(true)
end
end
it "returns a 403 error if guest" do it "returns a 403 error if guest" do
get api("/projects/#{project.id}/repository/branches", user2) get api("/projects/#{project.id}/repository/branches", user2)
expect(response).to have_http_status(403) expect(response).to have_http_status(403)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment