Skip to content
Snippets Groups Projects
Commit 633a0bf1 authored by Igor Drozdov's avatar Igor Drozdov :two:
Browse files

Leave pool repository on fork unlinking

When a visibility of a repository changes
we need to leave the pool in order to avoid
accessing objects via forks that are attached
to the same pool
parent 57aa7792
No related branches found
No related tags found
No related merge requests found
......@@ -32,6 +32,8 @@ def execute
if fork_network = @project.root_of_fork_network
fork_network.update(root_project: nil, deleted_root_project_name: @project.full_name)
end
@project.leave_pool_repository
end
# rubocop: disable Cop/InBatches
......
---
title: Leave pool repository on fork unlinking
merge_request: 1288
author:
type: security
......@@ -6,7 +6,7 @@
state { :none }
before(:create) do |pool|
pool.source_project = create(:project, :repository)
pool.source_project ||= create(:project, :repository)
pool.source_project.update!(pool_repository: pool)
end
......
......@@ -403,7 +403,7 @@
end
context 'when forking with object pools' do
let(:fork_from_project) { create(:project, :public) }
let(:fork_from_project) { create(:project, :repository, :public) }
let(:forker) { create(:user) }
context 'when no pool exists' do
......
......@@ -207,6 +207,17 @@
end
end
context 'a project with pool repository' do
let(:project) { create(:project, :public, :repository) }
let!(:pool_repository) { create(:pool_repository, :ready, source_project: project) }
subject { described_class.new(project, user) }
it 'when unlinked leaves pool repository' do
expect { subject.execute }.to change { project.reload.has_pool_repository? }.from(true).to(false)
end
end
context 'when given project is not part of a fork network' do
let!(:project_without_forks) { create(:project, :public) }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment