Add some specs for forked project visibility_level cases
This commit is contained in:
parent
3cfd892f38
commit
c301ab0404
2 changed files with 63 additions and 0 deletions
|
@ -552,4 +552,28 @@ describe Project, models: true do
|
|||
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
|
||||
|
|
|
@ -100,6 +100,45 @@ describe Projects::UpdateService, services: true do
|
|||
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)
|
||||
Projects::UpdateService.new(project, user, opts).execute
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue