Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/ci/config/external/file/artifact_spec.rb')
-rw-r--r--spec/lib/gitlab/ci/config/external/file/artifact_spec.rb71
1 files changed, 63 insertions, 8 deletions
diff --git a/spec/lib/gitlab/ci/config/external/file/artifact_spec.rb b/spec/lib/gitlab/ci/config/external/file/artifact_spec.rb
index b59fc95a8cc..9da8d106862 100644
--- a/spec/lib/gitlab/ci/config/external/file/artifact_spec.rb
+++ b/spec/lib/gitlab/ci/config/external/file/artifact_spec.rb
@@ -4,8 +4,9 @@ require 'spec_helper'
RSpec.describe Gitlab::Ci::Config::External::File::Artifact do
let(:parent_pipeline) { create(:ci_pipeline) }
+ let(:variables) {}
let(:context) do
- Gitlab::Ci::Config::External::Context.new(parent_pipeline: parent_pipeline)
+ Gitlab::Ci::Config::External::Context.new(variables: variables, parent_pipeline: parent_pipeline)
end
let(:external_file) { described_class.new(params, context) }
@@ -29,14 +30,15 @@ RSpec.describe Gitlab::Ci::Config::External::File::Artifact do
end
describe '#valid?' do
- shared_examples 'is invalid' do
- it 'is not valid' do
- expect(external_file).not_to be_valid
- end
+ subject(:valid?) do
+ external_file.validate!
+ external_file.valid?
+ end
+ shared_examples 'is invalid' do
it 'sets the expected error' do
- expect(external_file.errors)
- .to contain_exactly(expected_error)
+ expect(valid?).to be_falsy
+ expect(external_file.errors).to contain_exactly(expected_error)
end
end
@@ -148,7 +150,7 @@ RSpec.describe Gitlab::Ci::Config::External::File::Artifact do
context 'when file is not empty' do
it 'is valid' do
- expect(external_file).to be_valid
+ expect(valid?).to be_truthy
expect(external_file.content).to be_present
end
@@ -160,6 +162,7 @@ RSpec.describe Gitlab::Ci::Config::External::File::Artifact do
user: anything
}
expect(context).to receive(:mutate).with(expected_attrs).and_call_original
+ external_file.validate!
external_file.content
end
end
@@ -168,6 +171,58 @@ RSpec.describe Gitlab::Ci::Config::External::File::Artifact do
end
end
end
+
+ context 'when job is provided as a variable' do
+ let(:variables) do
+ Gitlab::Ci::Variables::Collection.new([
+ { key: 'VAR1', value: 'a_secret_variable_value', masked: true }
+ ])
+ end
+
+ let(:params) { { artifact: 'generated.yml', job: 'a_secret_variable_value' } }
+
+ context 'when job does not exist in the parent pipeline' do
+ let(:expected_error) do
+ 'Job `xxxxxxxxxxxxxxxxxxxxxxx` not found in parent pipeline or does not have artifacts!'
+ end
+
+ it_behaves_like 'is invalid'
+ end
+ end
+ end
+ end
+
+ describe '#metadata' do
+ let(:params) { { artifact: 'generated.yml' } }
+
+ subject(:metadata) { external_file.metadata }
+
+ it {
+ is_expected.to eq(
+ context_project: nil,
+ context_sha: nil,
+ type: :artifact,
+ location: 'generated.yml',
+ extra: { job_name: nil }
+ )
+ }
+
+ context 'when job name includes a masked variable' do
+ let(:variables) do
+ Gitlab::Ci::Variables::Collection.new([{ key: 'VAR1', value: 'a_secret_variable_value', masked: true }])
+ end
+
+ let(:params) { { artifact: 'generated.yml', job: 'a_secret_variable_value' } }
+
+ it {
+ is_expected.to eq(
+ context_project: nil,
+ context_sha: nil,
+ type: :artifact,
+ location: 'generated.yml',
+ extra: { job_name: 'xxxxxxxxxxxxxxxxxxxxxxx' }
+ )
+ }
end
end
end