API uses ProtectedBranchPolicy for destroy/create
This commit is contained in:
parent
973bd4622d
commit
b6a4c0181b
2 changed files with 35 additions and 4 deletions
|
@ -74,7 +74,10 @@ module API
|
|||
delete ':id/protected_branches/:name', requirements: BRANCH_ENDPOINT_REQUIREMENTS do
|
||||
protected_branch = user_project.protected_branches.find_by!(name: params[:name])
|
||||
|
||||
destroy_conditionally!(protected_branch)
|
||||
destroy_conditionally!(protected_branch) do
|
||||
destroy_service = ::ProtectedBranches::DestroyService.new(user_project, current_user)
|
||||
destroy_service.execute(protected_branch)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -193,6 +193,19 @@ describe API::ProtectedBranches do
|
|||
expect(json_response['merge_access_levels'][0]['access_level']).to eq(Gitlab::Access::MASTER)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a policy restricts rule deletion' do
|
||||
before do
|
||||
policy = instance_double(ProtectedBranchPolicy, can?: false)
|
||||
expect(ProtectedBranchPolicy).to receive(:new).and_return(policy)
|
||||
end
|
||||
|
||||
it "prevents deletion of the protected branch rule" do
|
||||
post post_endpoint, name: branch_name
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when authenticated as a guest' do
|
||||
|
@ -209,18 +222,20 @@ describe API::ProtectedBranches do
|
|||
end
|
||||
|
||||
describe "DELETE /projects/:id/protected_branches/unprotect/:branch" do
|
||||
let(:delete_endpoint) { api("/projects/#{project.id}/protected_branches/#{branch_name}", user) }
|
||||
|
||||
before do
|
||||
project.add_master(user)
|
||||
end
|
||||
|
||||
it "unprotects a single branch" do
|
||||
delete api("/projects/#{project.id}/protected_branches/#{branch_name}", user)
|
||||
delete delete_endpoint
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
end
|
||||
|
||||
it_behaves_like '412 response' do
|
||||
let(:request) { api("/projects/#{project.id}/protected_branches/#{branch_name}", user) }
|
||||
let(:request) { delete_endpoint }
|
||||
end
|
||||
|
||||
it "returns 404 if branch does not exist" do
|
||||
|
@ -229,11 +244,24 @@ describe API::ProtectedBranches do
|
|||
expect(response).to have_gitlab_http_status(404)
|
||||
end
|
||||
|
||||
context 'when a policy restricts rule deletion' do
|
||||
before do
|
||||
policy = instance_double(ProtectedBranchPolicy, can?: false)
|
||||
expect(ProtectedBranchPolicy).to receive(:new).and_return(policy)
|
||||
end
|
||||
|
||||
it "prevents deletion of the protected branch rule" do
|
||||
delete delete_endpoint
|
||||
|
||||
expect(response).to have_gitlab_http_status(403)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when branch has a wildcard in its name' do
|
||||
let(:protected_name) { 'feature*' }
|
||||
|
||||
it "unprotects a wildcard branch" do
|
||||
delete api("/projects/#{project.id}/protected_branches/#{branch_name}", user)
|
||||
delete delete_endpoint
|
||||
|
||||
expect(response).to have_gitlab_http_status(204)
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue