summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2017-08-31 18:28:29 +0900
committerShinya Maeda <shinya@gitlab.com>2017-09-03 23:49:10 +0900
commit07f7a01b4da02533c417fa636f004fedf3c4c661 (patch)
tree4437591a427c5e1edf9792dc5e89d4f1d11cfd92
parentd3bf01608013eac24764c1dacd51f8b841dd9bf1 (diff)
downloadgitlab-ce-07f7a01b4da02533c417fa636f004fedf3c4c661.tar.gz
Improve spec. Add validation for accel_level on runner.
-rw-r--r--app/models/ci/runner.rb1
-rw-r--r--spec/factories/ci/runners.rb4
-rw-r--r--spec/models/ci/build_spec.rb22
-rw-r--r--spec/models/ci/runner_spec.rb54
-rw-r--r--spec/services/ci/register_job_service_spec.rb6
5 files changed, 54 insertions, 33 deletions
diff --git a/app/models/ci/runner.rb b/app/models/ci/runner.rb
index f202f08b151..b1798084787 100644
--- a/app/models/ci/runner.rb
+++ b/app/models/ci/runner.rb
@@ -35,6 +35,7 @@ module Ci
end
validate :tag_constraints
+ validates :access_level, presence: true
acts_as_taggable
diff --git a/spec/factories/ci/runners.rb b/spec/factories/ci/runners.rb
index 249d8bde5a1..efd9b34fb3f 100644
--- a/spec/factories/ci/runners.rb
+++ b/spec/factories/ci/runners.rb
@@ -23,11 +23,11 @@ FactoryGirl.define do
end
trait :ref_protected do
- access_level 'ref_protected'
+ access_level :ref_protected
end
trait :not_protected do
- access_level 'not_protected'
+ access_level :not_protected
end
end
end
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index ef6c91d11f1..a94fdbf8434 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -44,13 +44,25 @@ describe Ci::Build do
end
describe '.ref_protected' do
- let!(:protected_job) { create(:ci_build, :protected) }
- let!(:unprotected_job) { create(:ci_build, :unprotected) }
-
subject { described_class.ref_protected }
- it { is_expected.to include(protected_job) }
- it { is_expected.not_to include(unprotected_job) }
+ context 'when protected is true' do
+ let!(:job) { create(:ci_build, :protected) }
+
+ it { is_expected.to include(job) }
+ end
+
+ context 'when protected is false' do
+ let!(:job) { create(:ci_build, :unprotected) }
+
+ it { is_expected.not_to include(job) }
+ end
+
+ context 'when protected is false' do
+ let!(:job) { create(:ci_build, protected: nil) }
+
+ it { is_expected.not_to include(job) }
+ end
end
describe '#actionize' do
diff --git a/spec/models/ci/runner_spec.rb b/spec/models/ci/runner_spec.rb
index 8c157d4369b..ca48372c5e2 100644
--- a/spec/models/ci/runner_spec.rb
+++ b/spec/models/ci/runner_spec.rb
@@ -2,6 +2,8 @@ require 'spec_helper'
describe Ci::Runner do
describe 'validation' do
+ it { is_expected.to validate_presence_of(:access_level) }
+
context 'when runner is not allowed to pick untagged jobs' do
context 'when runner does not have tags' do
it 'is not valid' do
@@ -19,6 +21,34 @@ describe Ci::Runner do
end
end
+ describe '#access_level' do
+ context 'when creating new runner and access_level is nil' do
+ let(:runner) do
+ build(:ci_runner, access_level: nil)
+ end
+
+ it "object is invalid" do
+ expect(runner).not_to be_valid
+ end
+ end
+
+ context 'when creating new runner and access_level is defined in enum' do
+ let(:runner) do
+ build(:ci_runner, access_level: :not_protected)
+ end
+
+ it "object is valid" do
+ expect(runner).to be_valid
+ end
+ end
+
+ context 'when creating new runner and access_level is not defined in enum' do
+ it "raises an error" do
+ expect { build(:ci_runner, access_level: :this_is_not_defined) }.to raise_error(ArgumentError)
+ end
+ end
+ end
+
describe '#display_name' do
it 'returns the description if it has a value' do
runner = FactoryGirl.build(:ci_runner, description: 'Linux/Ruby-1.9.3-p448')
@@ -480,28 +510,4 @@ describe Ci::Runner do
expect(described_class.search(runner.description.upcase)).to eq([runner])
end
end
-
- describe '.access_level' do
- context 'when access_level of a runner is ref_protected' do
- before do
- create(:ci_runner, :ref_protected)
- end
-
- it 'a protected runner exists' do
- expect(described_class.count).to eq(1)
- expect(described_class.last.ref_protected?).to eq(true)
- end
- end
-
- context 'when access_level of a runner is not_protected' do
- before do
- create(:ci_runner, :not_protected)
- end
-
- it 'an not_protected runner exists' do
- expect(described_class.count).to eq(1)
- expect(described_class.last.not_protected?).to eq(true)
- end
- end
- end
end
diff --git a/spec/services/ci/register_job_service_spec.rb b/spec/services/ci/register_job_service_spec.rb
index e9bcb41c5f5..6f8ebf5d3ba 100644
--- a/spec/services/ci/register_job_service_spec.rb
+++ b/spec/services/ci/register_job_service_spec.rb
@@ -215,7 +215,9 @@ module Ci
end
end
- context 'when a runner is not_protected' do
+ context 'when access_level of runner is not_protected' do
+ let!(:specific_runner) { create(:ci_runner, :not_protected, :specific) }
+
context 'when a job is protected' do
let!(:pending_build) { create(:ci_build, :protected, pipeline: pipeline) }
@@ -233,7 +235,7 @@ module Ci
end
end
- context 'when a runner is ref_protected' do
+ context 'when access_level of runner is ref_protected' do
let!(:specific_runner) { create(:ci_runner, :ref_protected, :specific) }
context 'when a job is protected' do