diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2017-05-27 01:46:57 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2017-05-27 01:46:57 +0800 |
commit | 2785bc4faa0eb5c46b0c8b46b77aa4cf1d4ee4b4 (patch) | |
tree | 2b53225328d3d32341a54124466a0a4084b9d0c8 /spec/models | |
parent | 9cc918a5caca931887026d258ea1dcd6499d7c2f (diff) | |
download | gitlab-ce-2785bc4faa0eb5c46b0c8b46b77aa4cf1d4ee4b4.tar.gz |
Merge secret and protected vars to variables_for(ref)
Also introduce Ci::Variable#to_runner_variable to
build up the hash for runner.
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/ci/build_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/ci/variable_spec.rb | 7 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 42 |
3 files changed, 38 insertions, 13 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 0cc1fc2b360..6e7aa3d5841 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -1384,7 +1384,7 @@ describe Ci::Build, :models do allow(project).to receive(:predefined_variables) { ['project'] } allow(pipeline).to receive(:predefined_variables) { ['pipeline'] } allow(build).to receive(:yaml_variables) { ['yaml'] } - allow(project).to receive(:secret_variables) { ['secret'] } + allow(project).to receive(:variables_for).with(build.ref) { ['secret'] } end it { is_expected.to eq(%w[predefined project pipeline yaml secret]) } diff --git a/spec/models/ci/variable_spec.rb b/spec/models/ci/variable_spec.rb index fe8c52d5353..38b869f59ae 100644 --- a/spec/models/ci/variable_spec.rb +++ b/spec/models/ci/variable_spec.rb @@ -36,4 +36,11 @@ describe Ci::Variable, models: true do to raise_error(OpenSSL::Cipher::CipherError, 'bad decrypt') end end + + describe '#to_runner_variable' do + it 'returns a hash for the runner' do + expect(subject.to_runner_variable) + .to eq(key: subject.key, value: subject.value, public: false) + end + end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index b9094387865..7e5e6e899e2 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -1710,7 +1710,7 @@ describe Project, models: true do end end - describe 'variables' do + describe '#variables_for' do let(:project) { create(:empty_project) } let!(:secret_variable) do @@ -1721,22 +1721,40 @@ describe Project, models: true do create(:ci_variable, :protected, value: 'protected', project: project) end - describe '#secret_variables' do + subject { project.variables_for('ref') } + + shared_examples 'ref is protected' do + it 'contains all the variables' do + is_expected.to contain_exactly( + *[secret_variable, protected_variable].map(&:to_runner_variable)) + end + end + + context 'when the ref is not protected' do + before do + stub_application_setting( + default_branch_protection: Gitlab::Access::PROTECTION_NONE) + end + it 'contains only the secret variables' do - expect(project.secret_variables).to eq( - [{ key: secret_variable.key, - value: secret_variable.value, - public: false }]) + is_expected.to contain_exactly(secret_variable.to_runner_variable) end end - describe '#protected_variables' do - it 'contains only the protected variables' do - expect(project.protected_variables).to eq( - [{ key: protected_variable.key, - value: protected_variable.value, - public: false }]) + context 'when the ref is a protected branch' do + before do + create(:protected_branch, name: 'ref', project: project) end + + it_behaves_like 'ref is protected' + end + + context 'when the ref is a protected tag' do + before do + create(:protected_tag, name: 'ref', project: project) + end + + it_behaves_like 'ref is protected' end end |