Properly validate settings

This commit is contained in:
Piotr Sarnacki 2014-07-15 16:26:24 +02:00
parent fa56e4cfa0
commit 2e8fc35e13
2 changed files with 21 additions and 4 deletions

View File

@ -64,8 +64,12 @@ class Travis::Api::App
settings.merge(payload['settings']) settings.merge(payload['settings'])
# TODO: I would like to have better API here, but leaving this # TODO: I would like to have better API here, but leaving this
# for testing to not waste too much time before I can play with it # for testing to not waste too much time before I can play with it
settings.save if settings.save
respond_with({ settings: settings.obfuscated }, version: :v2) respond_with({ settings: settings.obfuscated }, version: :v2)
else
status 422
respond_with(settings, type: :validation_error, version: :v2)
end
else else
status 404 status 404
end end

View File

@ -34,10 +34,23 @@ describe 'Repos' do
body['settings']['build_pushes'].should == false body['settings']['build_pushes'].should == false
end end
it 'returns errors when settings are not valid' do
json = { 'settings' => { 'maximum_number_of_builds' => 'this is not a number' } }.to_json
response = patch "repos/#{repo.id}/settings", json, headers
repo.reload.settings['maximum_number_of_builds'].should == 0
body = JSON.parse(response.body)
body['message'].should == 'Validation failed'
body['errors'].should == [{
'field' => 'maximum_number_of_builds',
'code' => 'not_a_number'
}]
end
it 'allows to get settings' do it 'allows to get settings' do
response = get "repos/#{repo.id}/settings", {}, headers response = get "repos/#{repo.id}/settings", {}, headers
settings = Repository::Settings.defaults JSON.parse(response.body)['settings'].should have_key('build_pushes')
JSON.parse(response.body).should == { 'settings' => settings }
end end
end end