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
return bridge.drop!(:invalid_bridge_trigger)
end
if target_project == project
return bridge.drop!(:invalid_bridge_trigger)
end
unless can_create_cross_pipeline?
return bridge.drop!(:insufficient_bridge_permissions)
end
......
......@@ -121,5 +121,23 @@ describe Ci::CreateCrossProjectPipelineService, '#execute' do
expect(pipeline.ref).to eq 'master'
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
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