Commit cd834b46 authored by Dylan Griffith's avatar Dylan Griffith

Ensure Ci::Runner#assign_to errors for group runners

parent 84fa0610
...@@ -111,6 +111,8 @@ module Ci ...@@ -111,6 +111,8 @@ module Ci
if shared? if shared?
self.is_shared = false if shared? self.is_shared = false if shared?
self.runner_type = :project_type self.runner_type = :project_type
elsif group_type?
raise ArgumentError, 'Transitioning a group runner to a project runner is not supported'
end end
self.save self.save
......
...@@ -200,16 +200,29 @@ describe Ci::Runner do ...@@ -200,16 +200,29 @@ describe Ci::Runner do
describe '#assign_to' do describe '#assign_to' do
let!(:project) { FactoryBot.create(:project) } let!(:project) { FactoryBot.create(:project) }
let!(:shared_runner) { FactoryBot.create(:ci_runner, :shared) }
before do subject { runner.assign_to(project) }
shared_runner.assign_to(project)
context 'with shared_runner' do
let!(:runner) { FactoryBot.create(:ci_runner, :shared) }
it 'transitions shared runner to project runner and assigns project' do
subject
expect(runner).to be_specific
expect(runner).to be_project_type
expect(runner.projects).to eq([project])
expect(runner.only_for?(project)).to be_truthy
end end
end
context 'with group runner' do
let!(:runner) { FactoryBot.create(:ci_runner, runner_type: :group_type) }
it { expect(shared_runner).to be_specific } it 'raises an error' do
it { expect(shared_runner).to be_project_type } expect { subject }
it { expect(shared_runner.projects).to eq([project]) } .to raise_error(ArgumentError, 'Transitioning a group runner to a project runner is not supported')
it { expect(shared_runner.only_for?(project)).to be_truthy } end
end
end end
describe '.online' do describe '.online' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment