Fix runners filtering

This commit is contained in:
Tomasz Maczukin 2016-02-05 15:35:21 +01:00
parent 97c88966bb
commit 36e7ffea5d
2 changed files with 8 additions and 4 deletions

View file

@ -9,7 +9,7 @@ module API
# Example Request:
# GET /runners
get do
runners = filter_runners(current_user.ci_authorized_runners, params[:scope])
runners = filter_runners(current_user.ci_authorized_runners, params[:scope], without: ['specific', 'shared'])
present paginate(runners), with: Entities::Runner
end
@ -124,10 +124,14 @@ module API
end
helpers do
def filter_runners(runners, scope)
def filter_runners(runners, scope, options = {})
return runners unless scope.present?
available_scopes = ::Ci::Runner::AVAILABLE_SCOPES
if options[:without]
available_scopes = available_scopes - options[:without]
end
if (available_scopes & [scope]).empty?
render_api_error!('Scope contains invalid value', 400)
end

View file

@ -33,7 +33,7 @@ describe API::API, api: true do
end
it 'should filter runners by scope' do
get api('/runners?scope=specific', user)
get api('/runners?scope=active', user)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
expect(response.status).to eq(200)
@ -78,7 +78,7 @@ describe API::API, api: true do
end
it 'should filter runners by scope' do
get api('/runners?scope=specific', admin)
get api('/runners/all?scope=specific', admin)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
expect(response.status).to eq(200)