diff options
author | Sebastian Ziebell <sebastian.ziebell@asquera.de> | 2013-02-20 22:51:59 +0100 |
---|---|---|
committer | Sebastian Ziebell <sebastian.ziebell@asquera.de> | 2013-02-20 22:51:59 +0100 |
commit | 4a60c377b8cd531800757894e26cec1ac649046f (patch) | |
tree | f3e55f4ba50db6cc88a57666291d55b08583aad9 | |
parent | 33c1463645b51bcb26932e4825df0ce8fee6c729 (diff) | |
download | gitlab-ce-4a60c377b8cd531800757894e26cec1ac649046f.tar.gz |
API documentation update for milestones
Updated the milestones API documentation and added return codes descriptions.
-rw-r--r-- | doc/api/milestones.md | 40 | ||||
-rw-r--r-- | lib/api/milestones.rb | 18 | ||||
-rw-r--r-- | spec/requests/api/milestones_spec.rb | 15 |
3 files changed, 48 insertions, 25 deletions
diff --git a/doc/api/milestones.md b/doc/api/milestones.md index 73d29afc37a..9bb27271e95 100644 --- a/doc/api/milestones.md +++ b/doc/api/milestones.md @@ -1,6 +1,6 @@ ## List project milestones -Get a list of project milestones. +Returns a list of project milestones. ``` GET /projects/:id/milestones @@ -10,9 +10,16 @@ Parameters: + `id` (required) - The ID of a project -## Single milestone +Return values: -Get a single project milestone. ++ `200 Ok` on success and the list of project milestones ++ `401 Unauthorized` if user is not authenticated ++ `404 Not Found` if project ID not found + + +## Get single milestone + +Gets a single project milestone. ``` GET /projects/:id/milestones/:milestone_id @@ -23,9 +30,16 @@ Parameters: + `id` (required) - The ID of a project + `milestone_id` (required) - The ID of a project milestone -## New milestone +Return values: + ++ `200 Ok` on success and the single milestone ++ `401 Unauthorized` if user is not authenticated ++ `404 Not Found` if project ID not found + + +## Create new milestone -Create a new project milestone. +Creates a new project milestone. ``` POST /projects/:id/milestones @@ -38,9 +52,17 @@ Parameters: + `description` (optional) - The description of the milestone + `due_date` (optional) - The due date of the milestone +Return values: + ++ `201 Created` on success and the new milestone ++ `400 Bad Request` if the required attribute title is not given ++ `401 Unauthorized` if user is not authenticated ++ `404 Not Found` if project ID not found + + ## Edit milestone -Update an existing project milestone. +Updates an existing project milestone. ``` PUT /projects/:id/milestones/:milestone_id @@ -54,3 +76,9 @@ Parameters: + `description` (optional) - The description of a milestone + `due_date` (optional) - The due date of the milestone + `closed` (optional) - The status of the milestone + +Return values: + ++ `200 Ok` on success and the updated milestone ++ `401 Unauthorized` if user is not authenticated ++ `404 Not Found` if project ID or milestone ID not found diff --git a/lib/api/milestones.rb b/lib/api/milestones.rb index 7f8fe053ba1..ff98f005180 100644 --- a/lib/api/milestones.rb +++ b/lib/api/milestones.rb @@ -4,20 +4,6 @@ module Gitlab before { authenticate! } resource :projects do - - helpers do - # If an error occurs this helper method handles error codes for a given milestone - # - # Parameters: - # milestone_errors (required) - The erros collection of a milestone - # - def handle_milestone_errors(milestone_errors) - if milestone_errors[:title].any? - bad_request!(:title) - end - end - end - # Get a list of project milestones # # Parameters: @@ -56,12 +42,13 @@ module Gitlab post ":id/milestones" do authorize! :admin_milestone, user_project + bad_request!(:title) unless params[:title].present? + attrs = attributes_for_keys [:title, :description, :due_date] @milestone = user_project.milestones.new attrs if @milestone.save present @milestone, with: Entities::Milestone else - handle_milestone_errors(@milestone.errors) not_found! end end @@ -85,7 +72,6 @@ module Gitlab if @milestone.update_attributes attrs present @milestone, with: Entities::Milestone else - handle_milestone_errors(@milestone.errors) not_found! end end diff --git a/spec/requests/api/milestones_spec.rb b/spec/requests/api/milestones_spec.rb index 00e800e8b91..c379e8a5307 100644 --- a/spec/requests/api/milestones_spec.rb +++ b/spec/requests/api/milestones_spec.rb @@ -16,6 +16,11 @@ describe Gitlab::API do json_response.should be_an Array json_response.first['title'].should == milestone.title end + + it "should return a 401 error if user not authenticated" do + get api("/projects/#{project.id}/milestones") + response.status.should == 401 + end end describe "GET /projects/:id/milestones/:milestone_id" do @@ -25,6 +30,11 @@ describe Gitlab::API do json_response['title'].should == milestone.title end + it "should return 401 error if user not authenticated" do + get api("/projects/#{project.id}/milestones/#{milestone.id}") + response.status.should == 401 + end + it "should return a 404 error if milestone id not found" do get api("/projects/#{project.id}/milestones/1234", user) response.status.should == 404 @@ -33,8 +43,7 @@ describe Gitlab::API do describe "POST /projects/:id/milestones" do it "should create a new project milestone" do - post api("/projects/#{project.id}/milestones", user), - title: 'new milestone' + post api("/projects/#{project.id}/milestones", user), title: 'new milestone' response.status.should == 201 json_response['title'].should == 'new milestone' json_response['description'].should be_nil @@ -62,7 +71,7 @@ describe Gitlab::API do json_response['title'].should == 'updated title' end - it "should return a 404 error if milestone is not found" do + it "should return a 404 error if milestone id not found" do put api("/projects/#{project.id}/milestones/1234", user), title: 'updated title' response.status.should == 404 |