Project

General

Profile

Download (8.32 KB) Statistics
| Branch: | Tag: | Revision:
#
# Copyright 2014 Red Hat, Inc.
#
# This software is licensed to you under the GNU General Public
# License as published by the Free Software Foundation; either version
# 2 of the License (GPLv2) or (at your option) any later version.
# There is NO WARRANTY for this software, express or implied,
# including the implied warranties of MERCHANTABILITY,
# NON-INFRINGEMENT, or FITNESS FOR A PARTICULAR PURPOSE. You should
# have received a copy of GPLv2 along with this software; if not, see
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.

require File.expand_path("repository_base", File.dirname(__FILE__))

module Katello
class RepositoryCreateTest < RepositoryTestBase

def setup
super
User.current = @admin
@repo = build(:katello_repository, :fedora_17_el6,
:environment => @library,
:product => katello_products(:fedora),
:content_view_version => @library.default_content_view_version
)
end

def teardown
@repo.destroy if @repo
end

def test_create
assert @repo.save
refute_empty Repository.where(:id=>@repo.id)
end

def test_unique_repository_name_per_product_and_environment
@repo.save
@repo2 = build(:katello_repository,
:environment => @repo.environment,
:product => @repo.product,
:content_view_version => @repo.content_view_version,
:name => @repo.name,
:label => 'Another Label'
)

refute @repo2.valid?
end

def test_unique_repository_label_per_product_and_environment
@repo.save
@repo2 = build(:katello_repository,
:environment => @repo.environment,
:product => @repo.product,
:content_view_version => @repo.content_view_version,
:name => 'Another Name',
:label => @repo.label
)

refute @repo2.valid?
end

def test_create_with_no_type
@repo.content_type = ''
assert_raises ActiveRecord::RecordInvalid do
@repo.save!
end
end

def test_content_type
@repo.content_type = "puppet"
assert @repo.save
assert_equal "puppet", Repository.find(@repo.id).content_type
end
end

class RepositoryInstanceTest < RepositoryTestBase

def setup
super
User.current = @admin
end

def test_product
assert_equal @fedora, @fedora_17_x86_64.product
end

def test_environment
assert_equal @library.id, @fedora_17_x86_64.environment.id
end

def test_organization
assert_equal @acme_corporation.id, @fedora_17_x86_64.organization.id
end

def test_redhat?
refute @fedora_17_x86_64.redhat?
end

def test_custom?
assert @fedora_17_x86_64.custom?
end

def test_in_environment
assert_includes Repository.in_environment(@library), @fedora_17_x86_64
end

def test_in_product
assert_includes Repository.in_product(@fedora), @fedora_17_x86_64
end

def test_other_repos_with_same_content
assert_includes @fedora_17_x86_64.other_repos_with_same_content, @fedora_17_x86_64_dev
end

def test_other_repos_with_same_product_and_content
assert_includes @fedora_17_x86_64.other_repos_with_same_product_and_content, @fedora_17_x86_64_dev
end

def test_environment_id
assert_equal @library.id, @fedora_17_x86_64.environment_id
end

def test_yum_gpg_key_url
refute_nil @fedora_17_x86_64.yum_gpg_key_url
end

def test_clones
assert_includes @fedora_17_x86_64.clones, @fedora_17_x86_64_dev
end

def test_is_cloned_in?
assert @fedora_17_x86_64.is_cloned_in?(@dev)
end

def test_promoted?
assert @fedora_17_x86_64.promoted?

repo = build(:katello_repository,
:environment => @dev,
:content_view_version => @fedora_17_x86_64.content_view_version,
:product => @fedora_17_x86_64.product
)

assert repo.valid?
refute_nil repo.organization
refute repo.promoted?
end

def test_get_clone
assert_equal @fedora_17_x86_64_dev, @fedora_17_x86_64.get_clone(@dev)
end

def test_gpg_key_name
@fedora_17_x86_64.gpg_key_name = @unassigned_gpg_key.name

assert_equal @unassigned_gpg_key, @fedora_17_x86_64.gpg_key
end

def test_as_json
assert_includes @fedora_17_x86_64.as_json, "gpg_key_name"
end

def test_environmental_instances
assert_includes @fedora_17_x86_64.environmental_instances(@acme_corporation.default_content_view), @fedora_17_x86_64
assert_includes @fedora_17_x86_64.environmental_instances(@acme_corporation.default_content_view), @fedora_17_x86_64_dev
end

def test_create_clone
@fedora_17_x86_64.stubs(:checksum_type).returns(nil)
clone = @fedora_17_x86_64.create_clone(:environment => @staging)
assert clone.id
assert Repository.in_environment(@staging).where(:library_instance_id=>@fedora_17_x86_64.id).count > 0
end

def test_create_clone_preserve_type
@fedora_17_x86_64.stubs(:checksum_type).returns(nil)
@fedora_17_x86_64.content_type = 'file'
@fedora_17_x86_64.save!
clone = @fedora_17_x86_64.create_clone(:environment => @staging)
assert clone.id
assert_equal @fedora_17_x86_64.content_type, clone.content_type
end

def test_repo_id
@acme_corporation = get_organization

@fedora = Product.find(katello_products(:fedora).id)
@library = KTEnvironment.find(katello_environments(:library).id)

repo_id = Repository.repo_id(@fedora.label, @fedora_17_x86_64.label, @library.label,
@acme_corporation.label, @library.default_content_view.label, nil)
assert_equal "Empty_Organization-library_label-org_default_label-fedora_label-fedora_17_x86_64_label", repo_id
end

def test_clone_repo_path
path = Repository.clone_repo_path(:repository => @fedora_17_x86_64,
:version => @fedora_17_x86_64.content_view_version,
:content_view => @fedora_17_x86_64.content_view
)
assert_equal "/content_views/org_default_label/1/library/fedora_17_label", path

path = Repository.clone_repo_path(:repository => @fedora_17_x86_64,
:environment => @fedora_17_x86_64.organization.library,
:content_view => @fedora_17_x86_64.content_view
)
assert_equal "/library_default_view_library/library/fedora_17_label", path
end

def test_clone_repo_path_for_component
# validate that clone repo path for a component view does not include the component view label
library = KTEnvironment.find(katello_environments(:library).id)
cv = ContentView.find(katello_content_views(:composite_view))
cve = ContentViewEnvironment.where(:environment_id => library,
:content_view_id => cv).first
relative_path = Repository.clone_repo_path(repository: @fedora_17_x86_64,
environment: library,
content_view: cv)
assert_equal "/#{cve.label}/library/fedora_17_label", relative_path

# archive path
version = stub(:version => 1)
relative_path = Repository.clone_repo_path(repository: @fedora_17_x86_64,
version: version,
content_view: cv)
assert_equal "/content_views/composite_view/1/library/fedora_17_label", relative_path
end

def new_custom_repo
new_custom_repo = @fedora_17_x86_64.clone
new_custom_repo.name = "new_custom_repo"
new_custom_repo.label = "new_custom_repo"
new_custom_repo.pulp_id = "new_custom_repo"
new_custom_repo
end

def test_nil_url_url
new_repo = new_custom_repo
new_repo.url = nil
assert new_repo.save
assert new_repo.persisted?
assert_equal nil, new_repo.reload.url
refute new_repo.url?
end

def test_blank_url_url
new_repo = new_custom_repo

original_url = new_repo.url
new_repo.url = ""
refute new_repo.save
refute new_repo.errors.empty?
assert_equal original_url, new_repo.reload.url
end

def test_nil_rhel_url
rhel = Repository.find(katello_repositories(:rhel_6_x86_64))
rhel.url = nil
refute rhel.valid?
refute rhel.save
refute_empty rhel.errors
end
end
end
(17-17/20)