diff options
author | Tomasz Maczukin <tomasz@maczukin.pl> | 2016-02-05 17:35:21 +0300 |
---|---|---|
committer | Tomasz Maczukin <tomasz@maczukin.pl> | 2016-02-19 15:18:47 +0300 |
commit | 36e7ffea5de84102a7306faf679cdb5b81920f19 (patch) | |
tree | 7ef2abe7ee211a87d13716ca2aa0685d5eb7d247 | |
parent | 97c88966bb9594449a519d377203206dd6416868 (diff) |
Fix runners filtering
-rw-r--r-- | lib/api/runners.rb | 8 | ||||
-rw-r--r-- | spec/requests/api/runners_spec.rb | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/lib/api/runners.rb b/lib/api/runners.rb index 4a0e68a4ddb..e807d2eccf0 100644 --- a/lib/api/runners.rb +++ b/lib/api/runners.rb @@ -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 diff --git a/spec/requests/api/runners_spec.rb b/spec/requests/api/runners_spec.rb index 27ce8c08eb3..efb81bed03f 100644 --- a/spec/requests/api/runners_spec.rb +++ b/spec/requests/api/runners_spec.rb @@ -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) |