diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-06 18:08:05 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-03-06 18:08:05 +0300 |
commit | f78257cbddd711e18cbce93ad740a4aa0acac347 (patch) | |
tree | 7f018abe3ce1c0010879cc480f348a35e616fabb /spec/services/ci | |
parent | f500600a43b531e2e7a5858b74bd35312b02c349 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/ci')
-rw-r--r-- | spec/services/ci/create_pipeline_service/custom_config_content_spec.rb | 67 |
1 files changed, 57 insertions, 10 deletions
diff --git a/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb b/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb index 2657f1d300a..112b19fcbc5 100644 --- a/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb +++ b/spec/services/ci/create_pipeline_service/custom_config_content_spec.rb @@ -4,30 +4,77 @@ require 'spec_helper' describe Ci::CreatePipelineService do let_it_be(:project) { create(:project, :repository) } let_it_be(:user) { create(:admin) } - let(:upstream_pipeline) { create(:ci_pipeline) } let(:ref) { 'refs/heads/master' } let(:service) { described_class.new(project, user, { ref: ref }) } + let(:upstream_pipeline) { create(:ci_pipeline, project: project) } + let(:bridge) { create(:ci_bridge, pipeline: upstream_pipeline) } + + subject { service.execute(:push, bridge: bridge) } + context 'custom config content' do let(:bridge) do create(:ci_bridge, status: 'running', pipeline: upstream_pipeline, project: upstream_pipeline.project).tap do |bridge| - allow(bridge).to receive(:yaml_for_downstream).and_return( - <<~YML - rspec: - script: rspec - custom: - script: custom - YML - ) + allow(bridge).to receive(:yaml_for_downstream).and_return(config_from_bridge) end end - subject { service.execute(:push, bridge: bridge) } + let(:config_from_bridge) do + <<~YML + rspec: + script: rspec + custom: + script: custom + YML + end + + before do + allow(bridge).to receive(:yaml_for_downstream).and_return config_from_bridge + end it 'creates a pipeline using the content passed in as param' do expect(subject).to be_persisted expect(subject.builds.map(&:name)).to eq %w[rspec custom] expect(subject.config_source).to eq 'bridge_source' end + + context 'when bridge includes yaml from artifact' do + # the generated.yml is available inside the ci_build_artifacts.zip associated + # to the generator_job + let(:config_from_bridge) do + <<~YML + include: + - artifact: generated.yml + job: generator + YML + end + + context 'when referenced job exists' do + let!(:generator_job) do + create(:ci_build, :artifacts, + project: project, + pipeline: upstream_pipeline, + name: 'generator') + end + + it 'created a pipeline using the content passed in as param and download the artifact' do + expect(subject).to be_persisted + expect(subject.builds.pluck(:name)).to eq %w[rspec time custom] + expect(subject.config_source).to eq 'bridge_source' + end + end + + context 'when referenced job does not exist' do + it 'creates an empty pipeline' do + expect(subject).to be_persisted + expect(subject).to be_failed + expect(subject.errors.full_messages) + .to contain_exactly( + 'Job `generator` not found in parent pipeline or does not have artifacts!') + expect(subject.builds.pluck(:name)).to be_empty + expect(subject.config_source).to eq 'bridge_source' + end + end + end end end |