Respond with validation errors in commit status API

If validation errors are present, include validation errors in the
commit status API payload, instead of depending on state machine errors
caused by invalid record.
This commit is contained in:
Grzegorz Bizon 2017-01-18 12:24:53 +01:00
parent 53f4f84995
commit 9ce8aa31f2
2 changed files with 18 additions and 3 deletions

View File

@ -78,6 +78,8 @@ module API
description: params[:description]
)
render_validation_error!(status) if status.invalid?
begin
case params[:state]
when 'pending'

View File

@ -172,7 +172,7 @@ describe API::CommitStatuses, api: true do
end
end
context 'invalid status' do
context 'when status is invalid' do
before { post api(post_url, developer), state: 'invalid' }
it 'does not create commit status' do
@ -180,7 +180,7 @@ describe API::CommitStatuses, api: true do
end
end
context 'request without state' do
context 'when request without a state made' do
before { post api(post_url, developer) }
it 'does not create commit status' do
@ -188,7 +188,7 @@ describe API::CommitStatuses, api: true do
end
end
context 'invalid commit' do
context 'when commit SHA is invalid' do
let(:sha) { 'invalid_sha' }
before { post api(post_url, developer), state: 'running' }
@ -196,6 +196,19 @@ describe API::CommitStatuses, api: true do
expect(response).to have_http_status(404)
end
end
context 'when target URL is an invalid address' do
before do
post api(post_url, developer), state: 'pending',
target_url: 'invalid url'
end
it 'responds with bad request status and validation errors' do
expect(response).to have_http_status(400)
expect(json_response['message']['target_url'])
.to include 'must be a valid URL'
end
end
end
context 'reporter user' do