Merge branch 'dm-branch-api-can-push-fix' into 'master'
Fix branch API can_push attribute and add specs See merge request gitlab-org/gitlab-ce!20156
This commit is contained in:
commit
42532c9299
2 changed files with 34 additions and 3 deletions
|
@ -45,6 +45,7 @@ module API
|
||||||
present(
|
present(
|
||||||
paginate(::Kaminari.paginate_array(branches)),
|
paginate(::Kaminari.paginate_array(branches)),
|
||||||
with: Entities::Branch,
|
with: Entities::Branch,
|
||||||
|
current_user: current_user,
|
||||||
project: user_project,
|
project: user_project,
|
||||||
merged_branch_names: merged_branch_names
|
merged_branch_names: merged_branch_names
|
||||||
)
|
)
|
||||||
|
@ -63,7 +64,7 @@ module API
|
||||||
get do
|
get do
|
||||||
branch = find_branch!(params[:branch])
|
branch = find_branch!(params[:branch])
|
||||||
|
|
||||||
present branch, with: Entities::Branch, project: user_project
|
present branch, with: Entities::Branch, current_user: current_user, project: user_project
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -101,7 +102,7 @@ module API
|
||||||
end
|
end
|
||||||
|
|
||||||
if protected_branch.valid?
|
if protected_branch.valid?
|
||||||
present branch, with: Entities::Branch, project: user_project
|
present branch, with: Entities::Branch, current_user: current_user, project: user_project
|
||||||
else
|
else
|
||||||
render_api_error!(protected_branch.errors.full_messages, 422)
|
render_api_error!(protected_branch.errors.full_messages, 422)
|
||||||
end
|
end
|
||||||
|
@ -121,7 +122,7 @@ module API
|
||||||
protected_branch = user_project.protected_branches.find_by(name: branch.name)
|
protected_branch = user_project.protected_branches.find_by(name: branch.name)
|
||||||
protected_branch&.destroy
|
protected_branch&.destroy
|
||||||
|
|
||||||
present branch, with: Entities::Branch, project: user_project
|
present branch, with: Entities::Branch, current_user: current_user, project: user_project
|
||||||
end
|
end
|
||||||
|
|
||||||
desc 'Create branch' do
|
desc 'Create branch' do
|
||||||
|
@ -140,6 +141,7 @@ module API
|
||||||
if result[:status] == :success
|
if result[:status] == :success
|
||||||
present result[:branch],
|
present result[:branch],
|
||||||
with: Entities::Branch,
|
with: Entities::Branch,
|
||||||
|
current_user: current_user,
|
||||||
project: user_project
|
project: user_project
|
||||||
else
|
else
|
||||||
render_api_error!(result[:message], 400)
|
render_api_error!(result[:message], 400)
|
||||||
|
|
|
@ -155,6 +155,12 @@ describe API::Branches do
|
||||||
end
|
end
|
||||||
|
|
||||||
it_behaves_like 'repository branch'
|
it_behaves_like 'repository branch'
|
||||||
|
|
||||||
|
it 'returns that the current user cannot push' do
|
||||||
|
get api(route, current_user)
|
||||||
|
|
||||||
|
expect(json_response['can_push']).to eq(false)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when unauthenticated', 'and project is private' do
|
context 'when unauthenticated', 'and project is private' do
|
||||||
|
@ -169,6 +175,12 @@ describe API::Branches do
|
||||||
|
|
||||||
it_behaves_like 'repository branch'
|
it_behaves_like 'repository branch'
|
||||||
|
|
||||||
|
it 'returns that the current user can push' do
|
||||||
|
get api(route, current_user)
|
||||||
|
|
||||||
|
expect(json_response['can_push']).to eq(true)
|
||||||
|
end
|
||||||
|
|
||||||
context 'when branch contains a dot' do
|
context 'when branch contains a dot' do
|
||||||
let(:branch_name) { branch_with_dot.name }
|
let(:branch_name) { branch_with_dot.name }
|
||||||
|
|
||||||
|
@ -202,6 +214,23 @@ describe API::Branches do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when authenticated', 'as a developer and branch is protected' do
|
||||||
|
let(:current_user) { create(:user) }
|
||||||
|
let!(:protected_branch) { create(:protected_branch, project: project, name: branch_name) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
project.add_developer(current_user)
|
||||||
|
end
|
||||||
|
|
||||||
|
it_behaves_like 'repository branch'
|
||||||
|
|
||||||
|
it 'returns that the current user cannot push' do
|
||||||
|
get api(route, current_user)
|
||||||
|
|
||||||
|
expect(json_response['can_push']).to eq(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when authenticated', 'as a guest' do
|
context 'when authenticated', 'as a guest' do
|
||||||
it_behaves_like '403 response' do
|
it_behaves_like '403 response' do
|
||||||
let(:request) { get api(route, guest) }
|
let(:request) { get api(route, guest) }
|
||||||
|
|
Loading…
Reference in a new issue