OSDN Git Service

Status code 400 is returned if body is missing on note creation.
authorSebastian Ziebell <sebastian.ziebell@asquera.de>
Wed, 6 Feb 2013 15:34:06 +0000 (16:34 +0100)
committerSebastian Ziebell <sebastian.ziebell@asquera.de>
Wed, 6 Feb 2013 16:11:00 +0000 (17:11 +0100)
If a note is created with a POST request via API (`/projects/:id/notes`) status
code 400 is returned instead of 404. The resource itself exists but the request
is incomplete. Specs added to check different status codes when accessing, creating
and updating notes.

lib/api/notes.rb
spec/requests/api/notes_spec.rb

index 4613db5..75ea238 100644 (file)
@@ -43,6 +43,8 @@ module Gitlab
         if @note.save
           present @note, with: Entities::Note
         else
+          # :note is exposed as :body, but :note is set on error
+          error!(@note.errors[:note], 400) if @note.errors[:note].any?
           not_found!
         end
       end
index ae4fc11..a4abbd9 100644 (file)
@@ -36,6 +36,11 @@ describe Gitlab::API do
       response.status.should == 200
       json_response['body'].should == wall_note.note
     end
+
+    it "should return a 404 error if note not found" do
+      get api("/projects/#{project.id}/notes/123", user)
+      response.status.should == 404
+    end
   end
 
   describe "POST /projects/:id/notes" do
@@ -44,6 +49,11 @@ describe Gitlab::API do
       response.status.should == 201
       json_response['body'].should == 'hi!'
     end
+
+    it "should return a 400 error if body is missing" do
+      post api("/projects/#{project.id}/notes", user)
+      response.status.should == 400
+    end
   end
 
   describe "GET /projects/:id/noteable/:noteable_id/notes" do
@@ -54,6 +64,11 @@ describe Gitlab::API do
         json_response.should be_an Array
         json_response.first['body'].should == issue_note.note
       end
+
+      it "should return a 404 error when issue id not found" do
+        get api("/projects/#{project.id}/issues/123/notes", user)
+        response.status.should == 404
+      end
     end
 
     context "when noteable is a Snippet" do
@@ -63,6 +78,11 @@ describe Gitlab::API do
         json_response.should be_an Array
         json_response.first['body'].should == snippet_note.note
       end
+
+      it "should return a 404 error when snippet id not found" do
+        get api("/projects/#{project.id}/snippets/42/notes", user)
+        response.status.should == 404
+      end
     end
   end
 
@@ -73,6 +93,11 @@ describe Gitlab::API do
         response.status.should == 200
         json_response['body'].should == issue_note.note
       end
+
+      it "should return a 404 error if issue note not found" do
+        get api("/projects/#{project.id}/issues/#{issue.id}/notes/123", user)
+        response.status.should == 404
+      end
     end
 
     context "when noteable is a Snippet" do
@@ -81,6 +106,11 @@ describe Gitlab::API do
         response.status.should == 200
         json_response['body'].should == snippet_note.note
       end
+
+      it "should return a 404 error if snippet note not found" do
+        get api("/projects/#{project.id}/snippets/#{snippet.id}/notes/123", user)
+        response.status.should == 404
+      end
     end
   end