Add delete feature to triggers API
This commit is contained in:
parent
3098500835
commit
f00607431c
|
@ -61,6 +61,25 @@ module API
|
|||
|
||||
present triggers, with: Entities::Trigger
|
||||
end
|
||||
|
||||
# Delete trigger
|
||||
#
|
||||
# Parameters:
|
||||
# id (required) - The ID of a project
|
||||
# trigger_id - The ID of trigger to delete
|
||||
# Example Request:
|
||||
# DELETE /projects/:id/triggers/:trigger_id
|
||||
delete ':id/triggers/:trigger_id' do
|
||||
authenticate!
|
||||
authorize_admin_project
|
||||
|
||||
trigger = user_project.triggers.where(id: params[:trigger_id].to_i).first
|
||||
return not_found!('Trigger') unless trigger
|
||||
|
||||
trigger.destroy
|
||||
|
||||
present trigger, with: Entities::Trigger
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -114,4 +114,37 @@ describe API::API do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE /projects/:id/triggets/:trigger_id' do
|
||||
context 'authenticated user with valid permissions' do
|
||||
it 'should delete trigger' do
|
||||
expect do
|
||||
delete api("/projects/#{project.id}/triggers/#{trigger.id}", user)
|
||||
end.to change{project.triggers.count}.by(-1)
|
||||
expect(response.status).to eq(200)
|
||||
end
|
||||
|
||||
it 'should responde with 404 Not Found if requesting non-existing trigger' do
|
||||
delete api("/projects/#{project.id}/triggers/9999", user)
|
||||
|
||||
expect(response.status).to eq(404)
|
||||
end
|
||||
end
|
||||
|
||||
context 'authenticated user with invalid permissions' do
|
||||
it 'should not delete trigger' do
|
||||
delete api("/projects/#{project.id}/triggers/#{trigger.id}", user2)
|
||||
|
||||
expect(response.status).to eq(403)
|
||||
end
|
||||
end
|
||||
|
||||
context 'unauthentikated user' do
|
||||
it 'should not delete trigger' do
|
||||
delete api("/projects/#{project.id}/triggers/#{trigger.id}")
|
||||
|
||||
expect(response.status).to eq(401)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue