Project

General

Profile

Download (2.96 KB) Statistics
| Branch: | Tag: | Revision:
require 'katello_test_helper'
require 'support/pulp3_support'

module Katello
module Service
module Pulp3
class RepositoryOrphanBaseTest < ActiveSupport::TestCase
include Katello::Pulp3Support

def sync_and_reload_repo(repo, smart_proxy)
::Katello::Pulp3::Repository.any_instance.stubs(:fail_missing_publication).returns(nil)
ForemanTasks.sync_task(
::Actions::Pulp3::Orchestration::Repository::Update,
repo,
smart_proxy)

sync_args = {:smart_proxy_id => smart_proxy.id, :repo_id => repo.id}
ForemanTasks.sync_task(
::Actions::Pulp3::Orchestration::Repository::Sync,
repo, smart_proxy, sync_args)
end

def assert_version(repo, version)
repo.reload
repository_reference = Katello::Pulp3::RepositoryReference.find_by(
:root_repository_id => repo.root.id,
:content_view_id => repo.content_view.id)
assert repository_reference
assert_equal repository_reference.repository_href + version,
repo.version_href
end
end

class RepositoryOrphanTest < RepositoryOrphanBaseTest
def setup
User.current = users(:admin)
@primary = SmartProxy.pulp_primary
@repo = katello_repositories(:pulp3_file_1)
@repo.root.update(:url => 'https://fixtures.pulpproject.org/file2/')
ensure_creatable(@repo, @primary)
create_repo(@repo, @primary)

@smart_proxy_service = Katello::Pulp3::SmartProxyRepository.new(@primary)

sync_and_reload_repo(@repo, @primary)
assert_version(@repo, "versions/1/")

@repo.root.update(
url: "https://fixtures.pulpproject.org/file/")

sync_and_reload_repo(@repo, @primary)
assert_version(@repo, "versions/2/")
end

def teardown
ensure_creatable(@repo, @primary)
end

def test_orphan_repository_versions
orphans = @smart_proxy_service.orphan_repository_versions.collect { |_api, repo_versions| repo_versions }.flatten

repo_reference = Katello::Pulp3::RepositoryReference.find_by(
:root_repository_id => @repo.root.id,
:content_view_id => @repo.content_view.id)

refute_includes orphans, repo_reference.repository_href + 'versions/0/'
assert_includes orphans, repo_reference.repository_href + 'versions/1/'
refute_includes orphans, repo_reference.repository_href + 'versions/2/'
end

def test_delete_orphan_repository_versions
delete_orphan_tasks = @smart_proxy_service.delete_orphan_repository_versions
delete_orphan_tasks.compact.each { |task| wait_on_task(@primary, task) }
orphans = @smart_proxy_service.orphan_repository_versions.collect { |_api, repo_versions| repo_versions }.flatten
assert_empty orphans
end
end
end
end
end
(7-7/16)