Add some specs for forked project visibility_level cases
This commit is contained in:
parent
3cfd892f38
commit
c301ab0404
|
@ -552,4 +552,28 @@ describe Project, models: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#visibility_level_allowed?' do
|
||||||
|
let(:project) { create :project, visibility_level: Gitlab::VisibilityLevel::INTERNAL }
|
||||||
|
|
||||||
|
context 'when checking on non-forked project' do
|
||||||
|
it { expect(project.visibility_level_allowed?(Gitlab::VisibilityLevel::PRIVATE)).to be_truthy }
|
||||||
|
it { expect(project.visibility_level_allowed?(Gitlab::VisibilityLevel::INTERNAL)).to be_truthy }
|
||||||
|
it { expect(project.visibility_level_allowed?(Gitlab::VisibilityLevel::PUBLIC)).to be_truthy }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when checking on forked project' do
|
||||||
|
let(:forked_project) { create :forked_project_with_submodules }
|
||||||
|
|
||||||
|
before do
|
||||||
|
forked_project.build_forked_project_link(forked_to_project_id: forked_project.id, forked_from_project_id: project.id)
|
||||||
|
forked_project.save
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(forked_project.visibility_level_allowed?(Gitlab::VisibilityLevel::PRIVATE)).to be_truthy }
|
||||||
|
it { expect(forked_project.visibility_level_allowed?(Gitlab::VisibilityLevel::INTERNAL)).to be_truthy }
|
||||||
|
it { expect(forked_project.visibility_level_allowed?(Gitlab::VisibilityLevel::PUBLIC)).to be_falsey }
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -100,6 +100,45 @@ describe Projects::UpdateService, services: true do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe :visibility_level do
|
||||||
|
let(:user) { create :user, admin: true }
|
||||||
|
let(:project) { create :project, visibility_level: Gitlab::VisibilityLevel::INTERNAL }
|
||||||
|
let(:forked_project) { create :forked_project_with_submodules, visibility_level: Gitlab::VisibilityLevel::INTERNAL }
|
||||||
|
let(:opts) { {} }
|
||||||
|
|
||||||
|
before do
|
||||||
|
forked_project.build_forked_project_link(forked_to_project_id: forked_project.id, forked_from_project_id: project.id)
|
||||||
|
forked_project.save
|
||||||
|
|
||||||
|
@created_internal = project.internal?
|
||||||
|
@fork_created_internal = forked_project.internal?
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'should update forks visibility level when parent set to more restrictive' do
|
||||||
|
before do
|
||||||
|
opts.merge!(visibility_level: Gitlab::VisibilityLevel::PRIVATE)
|
||||||
|
update_project(project, user, opts).inspect
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(@created_internal).to be_truthy }
|
||||||
|
it { expect(@fork_created_internal).to be_truthy }
|
||||||
|
it { expect(project.private?).to be_truthy }
|
||||||
|
it { expect(project.forks.first.private?).to be_truthy }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'should not update forks visibility level when parent set to less restrictive' do
|
||||||
|
before do
|
||||||
|
opts.merge!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
|
||||||
|
update_project(project, user, opts).inspect
|
||||||
|
end
|
||||||
|
|
||||||
|
it { expect(@created_internal).to be_truthy }
|
||||||
|
it { expect(@fork_created_internal).to be_truthy }
|
||||||
|
it { expect(project.public?).to be_truthy }
|
||||||
|
it { expect(project.forks.first.internal?).to be_truthy }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def update_project(project, user, opts)
|
def update_project(project, user, opts)
|
||||||
Projects::UpdateService.new(project, user, opts).execute
|
Projects::UpdateService.new(project, user, opts).execute
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue