summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-06 16:34:06 +0100
committerSebastian Ziebell <sebastian.ziebell@asquera.de>2013-02-06 17:11:00 +0100
commitbb24275f8d0e726aec347c8be7f199346e90793d (patch)
tree3fc4a01ad41fb2916c23f1465f8305826e7934c8
parentb9d40d2524a78013737be16b4cd0976ded843a1b (diff)
downloadgitlab-ce-bb24275f8d0e726aec347c8be7f199346e90793d.tar.gz
Status code 400 is returned if body is missing on note creation.
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.
-rw-r--r--lib/api/notes.rb2
-rw-r--r--spec/requests/api/notes_spec.rb30
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/api/notes.rb b/lib/api/notes.rb
index 4613db54578..75ea238fe23 100644
--- a/lib/api/notes.rb
+++ b/lib/api/notes.rb
@@ -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
diff --git a/spec/requests/api/notes_spec.rb b/spec/requests/api/notes_spec.rb
index ae4fc111f63..a4abbd93349 100644
--- a/spec/requests/api/notes_spec.rb
+++ b/spec/requests/api/notes_spec.rb
@@ -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