Skip to content
Snippets Groups Projects
Commit 53f775ae authored by Tomasz Maczukin's avatar Tomasz Maczukin
Browse files

Fix runners filtering in API

parent 8c37f0ff
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -121,11 +121,11 @@ module API
return runners unless scope.present?
 
available_scopes = ::Ci::Runner::AVAILABLE_SCOPES
unless (available_scopes && scope).empty?
runners.send(scope)
else
if (available_scopes & [scope]).empty?
render_api_error!('Scope contains invalid value', 400)
end
runners.send(scope)
end
 
def get_runner(id)
Loading
Loading
Loading
Loading
@@ -22,35 +22,42 @@ describe API::API, api: true do
let!(:two_projects_runner_project2) { create(:ci_runner_project, runner: two_projects_runner, project: project2) }
 
describe 'GET /runners' do
context 'authorized user with admin privileges' do
it 'should return all runners' do
get api('/runners', admin)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
context 'authorized user' do
context 'authorized user with admin privileges' do
it 'should return all runners' do
get api('/runners', admin)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
 
expect(response.status).to eq(200)
expect(json_response).to be_an Array
expect(shared).to be_truthy
expect(response.status).to eq(200)
expect(json_response).to be_an Array
expect(shared).to be_truthy
end
end
 
it 'should filter runners by scope' do
get api('/runners?scope=specific', admin)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
context 'authorized user without admin privileges' do
it 'should return user available runners' do
get api('/runners', user)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
 
expect(response.status).to eq(200)
expect(json_response).to be_an Array
expect(shared).to be_falsey
expect(response.status).to eq(200)
expect(json_response).to be_an Array
expect(shared).to be_falsey
end
end
end
 
context 'authorized user without admin privileges' do
it 'should return user available runners' do
get api('/runners', user)
it 'should filter runners by scope' do
get api('/runners?scope=specific', user)
shared = false || json_response.map{ |r| r['is_shared'] }.inject{ |sum, shr| sum || shr}
 
expect(response.status).to eq(200)
expect(json_response).to be_an Array
expect(shared).to be_falsey
end
it 'should avoid filtering if scope is invalid' do
get api('/runners?scope=unknown', user)
expect(response.status).to eq(400)
end
end
 
context 'unauthorized user' do
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment