Project

General

Profile

Download (9.74 KB) Statistics
| Branch: | Tag: | Revision:
# Copyright 2012 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 'rubygems'
require 'minitest/autorun'

require './test/integration/resources/helpers/repository_helper'
require './lib/runcible'


module TestExtensionsRepositoryBase
include RepositoryHelper

def setup
@extension = Runcible::Extensions::Repository
VCR.insert_cassette('extensions/repository_extensions', :match_requests_on => [:body_json, :path, :method])
end

def teardown
VCR.eject_cassette
end

end

class TestExtensionsRepositoryCreate < MiniTest::Unit::TestCase
include TestExtensionsRepositoryBase

def teardown
super
RepositoryHelper.destroy_repo
end

def test_create_with_importer
response = @extension.create_with_importer(RepositoryHelper.repo_id, {:id=>"yum_importer"})
assert response.code == 201

response = @extension.retrieve(RepositoryHelper.repo_id, {:details => true})
assert response['id'] == RepositoryHelper.repo_id
assert response['importers'].first['importer_type_id'] == 'yum_importer'
end


def test_create_with_importer_object
response = @extension.create_with_importer(RepositoryHelper.repo_id, Runcible::Extensions::YumImporter.new())
assert response.code == 201

response = @extension.retrieve(RepositoryHelper.repo_id, {:details => true})
assert response['id'] == RepositoryHelper.repo_id
assert response['importers'].first['importer_type_id'] == 'yum_importer'
end


def test_create_with_distributors
VCR.use_cassette('extensions/repository_create_with_importer') do

distributors = [{'type_id' => 'yum_distributor', 'id'=>'123', 'auto_publish'=>true,
'config'=>{'relative_url' => '/path', 'http' => true, 'https' => true}}]

response = @extension.create_with_distributors(RepositoryHelper.repo_id, distributors)
assert response.code == 201
assert response['id'] == RepositoryHelper.repo_id
end
end

def test_create_with_distributor_object
repo_id = RepositoryHelper.repo_id + "_distro"
response = @extension.create_with_distributors(repo_id, [Runcible::Extensions::YumDistributor.new(
'/path', true, true, :id => '123')])
assert response.code == 201

response = @extension.retrieve(repo_id, {:details => true})
assert response['id'] == repo_id
assert response['distributors'].first['distributor_type_id'] == 'yum_distributor'
ensure
RepositoryHelper.destroy_repo(repo_id)
end

def test_create_with_importer_and_distributors
distributors = [{'type_id' => 'yum_distributor', 'id'=>'123', 'auto_publish'=>true,
'config'=>{'relative_url' => '/', 'http' => true, 'https' => true}}]
response = @extension.create_with_importer_and_distributors(RepositoryHelper.repo_id, {:id=>'yum_importer'}, distributors)
assert response.code == 201

response = @extension.retrieve(RepositoryHelper.repo_id, {:details => true})
assert response['id'] == RepositoryHelper.repo_id
assert response['importers'].first['importer_type_id'] == 'yum_importer'
end

def test_create_with_importer_and_distributors_objects
distributors = [Runcible::Extensions::YumDistributor.new(
'/path', true, true, :id => '123')]
importer = Runcible::Extensions::YumImporter.new()
response = @extension.create_with_importer_and_distributors(RepositoryHelper.repo_id, importer, distributors)
assert response.code == 201

response = @extension.retrieve(RepositoryHelper.repo_id, {:details => true})
assert response['id'] == RepositoryHelper.repo_id
assert response['importers'].first['importer_type_id'] == 'yum_importer'
end


end

class TestExtensionsRepositoryMisc < MiniTest::Unit::TestCase
include TestExtensionsRepositoryBase

def setup
super
RepositoryHelper.create_repo(:importer=>true)
end

def teardown
RepositoryHelper.destroy_repo
super
end

def test_search_by_repository_ids
response = @extension.search_by_repository_ids([RepositoryHelper.repo_id])
assert response.code == 200

assert response.collect{ |repo| repo["display_name"] == RepositoryHelper.repo_id }.length > 0
end

def test_create_or_update_schedule
response = @extension.create_or_update_schedule(RepositoryHelper.repo_id, 'yum_importer', "2012-09-25T20:44:00Z/P7D")
assert response.code == 201
response = @extension.create_or_update_schedule(RepositoryHelper.repo_id, 'yum_importer', "2011-09-25T20:44:00Z/P7D")
assert response.code == 200
end

end


class TestExtensionsRepositoryUnitList < MiniTest::Unit::TestCase

@@extension = Runcible::Extensions::Repository

def self.before_suite
VCR.insert_cassette('extensions/repository_unit_list', :match_requests_on => [:method, :path, :params, :body_json])
RepositoryHelper.destroy_repo
RepositoryHelper.create_and_sync_repo(:importer => true)
end

def self.after_suite
RepositoryHelper.destroy_repo
VCR.eject_cassette
end


def test_rpm_ids
response = @@extension.rpm_ids(RepositoryHelper.repo_id)
assert !response.empty?
assert response.first.is_a?(String)
end

def test_rpms
response = @@extension.rpms(RepositoryHelper.repo_id)
assert !response.empty?
assert response.first.is_a?(Hash)
end

def test_errata_list
response = @@extension.errata_ids(RepositoryHelper.repo_id)
assert !response.empty?
end

def test_distribution_list
response = @@extension.distributions(RepositoryHelper.repo_id)
assert !response.empty?
end

def test_package_groups
response = @@extension.package_groups(RepositoryHelper.repo_id)
assert !response.empty?
end

def test_package_categories
response = @@extension.package_categories(RepositoryHelper.repo_id)
assert !response.empty?
end

def test_packages_by_name
list = @@extension.rpms(RepositoryHelper.repo_id)
rpm = list.first
response = @@extension.packages_by_nvre(RepositoryHelper.repo_id, rpm['name'])
assert !response.empty?
end

def test_packages_by_nvrea
list = @@extension.rpms(RepositoryHelper.repo_id)
rpm = list.first
response = @@extension.packages_by_nvre(RepositoryHelper.repo_id, rpm['name'], rpm['version'],
rpm['release'], rpm['epoch'])
assert !response.empty?
end

end


class TestExtensionsRepositoryCopy < MiniTest::Unit::TestCase

@@extension = Runcible::Extensions::Repository
@@clone_name = RepositoryHelper.repo_id + "_clone"

def self.before_suite
VCR.insert_cassette('extensions/repository_associate')
RepositoryHelper.destroy_repo(@@clone_name)
RepositoryHelper.destroy_repo
RepositoryHelper.create_and_sync_repo(:importer => true)
@@extension.create_with_importer(@@clone_name, {:id=>"yum_importer"})
end

def self.after_suite
RepositoryHelper.destroy_repo(@@clone_name)
RepositoryHelper.destroy_repo
VCR.eject_cassette
end

def test_package_copy
response = @@extension.rpm_copy(RepositoryHelper.repo_id, @@clone_name)
RepositoryHelper.task = response
assert response.code == 202
assert response['call_request_tags'].include?('pulp:action:associate')
end

def test_errata_copy
response = @@extension.errata_copy(RepositoryHelper.repo_id, @@clone_name)
RepositoryHelper.task = response
assert response.code == 202
assert response['call_request_tags'].include?('pulp:action:associate')
end

def test_distribution_copy
response = @@extension.distribution_copy(RepositoryHelper.repo_id, @@clone_name)
RepositoryHelper.task = response
assert response.code == 202
assert response['call_request_tags'].include?('pulp:action:associate')
end
end


class TestExtensionsRepositoryUnassociate < MiniTest::Unit::TestCase

@@extension = Runcible::Extensions::Repository
@@clone_name = RepositoryHelper.repo_id + "_clone"

def self.before_suite
VCR.insert_cassette('extensions/repository_dissassociate', :match_requests_on => [:body_json, :path, :method, :params])
RepositoryHelper.destroy_repo(@@clone_name)
RepositoryHelper.destroy_repo
RepositoryHelper.create_and_sync_repo(:importer => true)
@@extension.create_with_importer(@@clone_name, {:id=>"yum_importer"})
task = @@extension.unit_copy(@@clone_name, RepositoryHelper.repo_id)
RepositoryHelper.wait_on_task(task)
end

def self.after_suite
RepositoryHelper.destroy_repo(@@clone_name)
RepositoryHelper.destroy_repo
VCR.eject_cassette
end


def test_rpm_remove
pkg_ids = RepositoryHelper.rpm_ids
assert !pkg_ids.empty?
task = @@extension.rpm_remove(@@clone_name, [pkg_ids.first])
RepositoryHelper.wait_on_task(task)
assert_equal((pkg_ids.length - 1), @@extension.rpm_ids(@@clone_name).length)
end


def test_errata_remove
errata_ids = @@extension.errata_ids(RepositoryHelper.repo_id)
assert errata_ids.first
task = @@extension.errata_remove(@@clone_name, [errata_ids.first])
RepositoryHelper.wait_on_task(task)
assert_equal((errata_ids.length - 1), @@extension.errata_ids(@@clone_name).length)
end

def test_distribution_remove
dist_ids = @@extension.distributions(RepositoryHelper.repo_id).collect{|d| d['id']}
assert dist_ids.first
task = @@extension.distribution_remove(@@clone_name, dist_ids.first)
RepositoryHelper.wait_on_task(task)
assert_equal((dist_ids.length - 1), @@extension.distributions(@@clone_name).length)
end

end
(6-6/7)