API: changed status codes for project hooks functions

Different status codes in the API lib are returned on hook creation, update or deletion.
If a required parameter is not given (e.g. `url` in `/projects/:id/hooks/:hook_id`) status
code 400 (Bad request) is returned. On hook deletion a 200 status code is returned, regardless if
the hook is present or not. This makes the DELETE function an idempotent operation. Appropriate tests
are added to check these status codes.
This commit is contained in:
Sebastian Ziebell 2013-02-12 17:44:42 +01:00
parent 449380265a
commit 7cc4339f71
2 changed files with 34 additions and 6 deletions

View file

@ -195,11 +195,14 @@ module Gitlab
# POST /projects/:id/hooks
post ":id/hooks" do
authorize! :admin_project, user_project
error!("Url not given", 400) unless params.has_key? :url
@hook = user_project.hooks.new({"url" => params[:url]})
if @hook.save
present @hook, with: Entities::Hook
else
error!({'message' => '404 Not found'}, 404)
not_found!
end
end
@ -215,7 +218,7 @@ module Gitlab
@hook = user_project.hooks.find(params[:hook_id])
authorize! :admin_project, user_project
error!("Url not given", 400) if !params.has_key? :url
error!("Url not given", 400) unless params.has_key? :url
attrs = attributes_for_keys [:url]
if @hook.update_attributes attrs
@ -234,8 +237,13 @@ module Gitlab
# DELETE /projects/:id/hooks
delete ":id/hooks" do
authorize! :admin_project, user_project
@hook = user_project.hooks.find(params[:hook_id])
@hook.destroy
error!("Hook id not given", 400) unless params.has_key? :hook_id
begin
@hook = ProjectHook.find(params[:hook_id])
@hook.destroy
rescue
end
end
# Get a project repository branches