bb24275f8d
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.
137 lines
4.8 KiB
Ruby
137 lines
4.8 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Gitlab::API do
|
|
include ApiHelpers
|
|
|
|
let(:user) { create(:user) }
|
|
let!(:project) { create(:project, namespace: user.namespace ) }
|
|
let!(:issue) { create(:issue, project: project, author: user) }
|
|
let!(:snippet) { create(:snippet, project: project, author: user) }
|
|
let!(:issue_note) { create(:note, noteable: issue, project: project, author: user) }
|
|
let!(:snippet_note) { create(:note, noteable: snippet, project: project, author: user) }
|
|
let!(:wall_note) { create(:note, project: project, author: user) }
|
|
before { project.team << [user, :reporter] }
|
|
|
|
describe "GET /projects/:id/notes" do
|
|
context "when unauthenticated" do
|
|
it "should return authentication error" do
|
|
get api("/projects/#{project.id}/notes")
|
|
response.status.should == 401
|
|
end
|
|
end
|
|
|
|
context "when authenticated" do
|
|
it "should return project wall notes" do
|
|
get api("/projects/#{project.id}/notes", user)
|
|
response.status.should == 200
|
|
json_response.should be_an Array
|
|
json_response.first['body'].should == wall_note.note
|
|
end
|
|
end
|
|
end
|
|
|
|
describe "GET /projects/:id/notes/:note_id" do
|
|
it "should return a wall note by id" do
|
|
get api("/projects/#{project.id}/notes/#{wall_note.id}", user)
|
|
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
|
|
it "should create a new wall note" do
|
|
post api("/projects/#{project.id}/notes", user), body: 'hi!'
|
|
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
|
|
context "when noteable is an Issue" do
|
|
it "should return an array of issue notes" do
|
|
get api("/projects/#{project.id}/issues/#{issue.id}/notes", user)
|
|
response.status.should == 200
|
|
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
|
|
it "should return an array of snippet notes" do
|
|
get api("/projects/#{project.id}/snippets/#{snippet.id}/notes", user)
|
|
response.status.should == 200
|
|
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
|
|
|
|
describe "GET /projects/:id/noteable/:noteable_id/notes/:note_id" do
|
|
context "when noteable is an Issue" do
|
|
it "should return an issue note by id" do
|
|
get api("/projects/#{project.id}/issues/#{issue.id}/notes/#{issue_note.id}", user)
|
|
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
|
|
it "should return a snippet note by id" do
|
|
get api("/projects/#{project.id}/snippets/#{snippet.id}/notes/#{snippet_note.id}", user)
|
|
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
|
|
|
|
describe "POST /projects/:id/noteable/:noteable_id/notes" do
|
|
context "when noteable is an Issue" do
|
|
it "should create a new issue note" do
|
|
post api("/projects/#{project.id}/issues/#{issue.id}/notes", user), body: 'hi!'
|
|
response.status.should == 201
|
|
json_response['body'].should == 'hi!'
|
|
json_response['author']['email'].should == user.email
|
|
end
|
|
end
|
|
|
|
context "when noteable is a Snippet" do
|
|
it "should create a new snippet note" do
|
|
post api("/projects/#{project.id}/snippets/#{snippet.id}/notes", user), body: 'hi!'
|
|
response.status.should == 201
|
|
json_response['body'].should == 'hi!'
|
|
json_response['author']['email'].should == user.email
|
|
end
|
|
end
|
|
end
|
|
end
|