Commit f0060743 authored by Tomasz Maczukin's avatar Tomasz Maczukin

Add delete feature to triggers API

parent 30985008
......@@ -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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment