Merge branch '3874-correctly-return-json-on-delete-responses' into 'master'
Return 202 with JSON body on async removals on V4 API Closes #3874 See merge request !9449
This commit is contained in:
commit
f40403cce1
9 changed files with 51 additions and 5 deletions
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Return 202 with JSON body on async removals on V4 API
|
||||
merge_request:
|
||||
author:
|
|
@ -41,3 +41,5 @@ changes are in V4:
|
|||
- Renamed `branch_name` to `branch` on DELETE `id/repository/branches/:branch` response [!8936](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8936)
|
||||
- Remove `public` param from create and edit actions of projects [!8736](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8736)
|
||||
- Notes do not return deprecated field `upvote` and `downvote` [!9384](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9384)
|
||||
- Return 202 with JSON body on async removals on V4 API (DELETE `/projects/:id/repository/merged_branches` and DELETE `/projects/:id`) [!9449](https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9449)
|
||||
|
||||
|
|
|
@ -137,7 +137,7 @@ module API
|
|||
delete ":id/repository/merged_branches" do
|
||||
DeleteMergedBranchesService.new(user_project, current_user).async_execute
|
||||
|
||||
status(200)
|
||||
accepted!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -209,6 +209,10 @@ module API
|
|||
render_api_error!('204 No Content', 204)
|
||||
end
|
||||
|
||||
def accepted!
|
||||
render_api_error!('202 Accepted', 202)
|
||||
end
|
||||
|
||||
def render_validation_error!(model)
|
||||
if model.errors.any?
|
||||
render_api_error!(model.errors.messages || '400 Bad Request', 400)
|
||||
|
|
|
@ -282,6 +282,8 @@ module API
|
|||
delete ":id" do
|
||||
authorize! :remove_project, user_project
|
||||
::Projects::DestroyService.new(user_project, current_user, {}).async_execute
|
||||
|
||||
accepted!
|
||||
end
|
||||
|
||||
desc 'Mark this project as forked from another'
|
||||
|
|
|
@ -18,6 +18,13 @@ module API
|
|||
|
||||
present branches, with: ::API::Entities::RepoBranch, project: user_project
|
||||
end
|
||||
|
||||
desc 'Delete all merged branches'
|
||||
delete ":id/repository/merged_branches" do
|
||||
DeleteMergedBranchesService.new(user_project, current_user).async_execute
|
||||
|
||||
status(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -360,9 +360,11 @@ describe API::Branches, api: true do
|
|||
allow_any_instance_of(Repository).to receive(:rm_branch).and_return(true)
|
||||
end
|
||||
|
||||
it 'returns 200' do
|
||||
it 'returns 202 with json body' do
|
||||
delete api("/projects/#{project.id}/repository/merged_branches", user)
|
||||
expect(response).to have_http_status(200)
|
||||
|
||||
expect(response).to have_http_status(202)
|
||||
expect(json_response['message']).to eql('202 Accepted')
|
||||
end
|
||||
|
||||
it 'returns a 403 error if guest' do
|
||||
|
|
|
@ -1263,7 +1263,9 @@ describe API::Projects, api: true do
|
|||
context 'when authenticated as user' do
|
||||
it 'removes project' do
|
||||
delete api("/projects/#{project.id}", user)
|
||||
expect(response).to have_http_status(200)
|
||||
|
||||
expect(response).to have_http_status(202)
|
||||
expect(json_response['message']).to eql('202 Accepted')
|
||||
end
|
||||
|
||||
it 'does not remove a project if not an owner' do
|
||||
|
@ -1287,7 +1289,9 @@ describe API::Projects, api: true do
|
|||
context 'when authenticated as admin' do
|
||||
it 'removes any existing project' do
|
||||
delete api("/projects/#{project.id}", admin)
|
||||
expect(response).to have_http_status(200)
|
||||
|
||||
expect(response).to have_http_status(202)
|
||||
expect(json_response['message']).to eql('202 Accepted')
|
||||
end
|
||||
|
||||
it 'does not remove a non existing project' do
|
||||
|
|
|
@ -20,4 +20,25 @@ describe API::V3::Branches, api: true do
|
|||
expect(branch_names).to match_array(project.repository.branch_names)
|
||||
end
|
||||
end
|
||||
|
||||
describe "DELETE /projects/:id/repository/merged_branches" do
|
||||
before do
|
||||
allow_any_instance_of(Repository).to receive(:rm_branch).and_return(true)
|
||||
end
|
||||
|
||||
it 'returns 200' do
|
||||
delete v3_api("/projects/#{project.id}/repository/merged_branches", user)
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
end
|
||||
|
||||
it 'returns a 403 error if guest' do
|
||||
user_b = create :user
|
||||
create(:project_member, :guest, user: user_b, project: project)
|
||||
|
||||
delete v3_api("/projects/#{project.id}/repository/merged_branches", user_b)
|
||||
|
||||
expect(response).to have_http_status(403)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue