API: Expose branch status

This commit is contained in:
Robert Schilling 2016-11-28 19:16:15 +01:00
parent 060ec3d77d
commit 2ce66c071f
4 changed files with 25 additions and 1 deletions

View file

@ -0,0 +1,4 @@
---
title: 'API: Expose merge status for branch API'
merge_request:
author: Robert Schilling

View file

@ -22,6 +22,7 @@ Example response:
[
{
"name": "master",
"merged": false,
"protected": true,
"developers_can_push": false,
"developers_can_merge": false,
@ -65,6 +66,7 @@ Example response:
```json
{
"name": "master",
"merged": false,
"protected": true,
"developers_can_push": false,
"developers_can_merge": false,
@ -123,6 +125,7 @@ Example response:
]
},
"name": "master",
"merged": false,
"protected": true,
"developers_can_push": true,
"developers_can_merge": true
@ -166,6 +169,7 @@ Example response:
]
},
"name": "master",
"merged": false,
"protected": false,
"developers_can_push": false,
"developers_can_merge": false
@ -206,6 +210,7 @@ Example response:
]
},
"name": "newbranch",
"merged": false,
"protected": false,
"developers_can_push": false,
"developers_can_merge": false

View file

@ -141,8 +141,12 @@ module API
options[:project].repository.commit(repo_branch.dereferenced_target)
end
expose :merged do |repo_branch, options|
options[:project].repository.merged_to_root_ref?(repo_branch.name)
end
expose :protected do |repo_branch, options|
options[:project].protected_branch? repo_branch.name
options[:project].protected_branch?(repo_branch.name)
end
expose :developers_can_push do |repo_branch, options|

View file

@ -31,11 +31,22 @@ describe API::API, api: true do
expect(json_response['name']).to eq(branch_name)
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['developers_can_push']).to eq(false)
expect(json_response['developers_can_merge']).to eq(false)
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
get api("/projects/#{project.id}/repository/branches", user2)
expect(response).to have_http_status(403)