Commit eae31540 authored by Grzegorz Bizon's avatar Grzegorz Bizon

Disallow circular dependency in cross pipeline creation

parent f9bfec40
...@@ -11,6 +11,10 @@ module Ci ...@@ -11,6 +11,10 @@ module Ci
return bridge.drop!(:invalid_bridge_trigger) return bridge.drop!(:invalid_bridge_trigger)
end end
if target_project == project
return bridge.drop!(:invalid_bridge_trigger)
end
unless can_create_cross_pipeline? unless can_create_cross_pipeline?
return bridge.drop!(:insufficient_bridge_permissions) return bridge.drop!(:insufficient_bridge_permissions)
end end
......
...@@ -121,5 +121,23 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do ...@@ -121,5 +121,23 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do
expect(pipeline.ref).to eq 'master' expect(pipeline.ref).to eq 'master'
end end
end end
context 'when circular dependency is defined' do
let(:trigger) do
{ trigger: { project: upstream_project.full_path } }
end
it 'does not create a new pipeline' do
expect { service.execute(bridge) }
.not_to change { Ci::Pipeline.count }
end
it 'changes status of the bridge build' do
service.execute(bridge)
expect(bridge.reload).to be_failed
expect(bridge.failure_reason).to eq 'invalid_bridge_trigger'
end
end
end end
end end
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