87 lines
3.6 KiB
Python
87 lines
3.6 KiB
Python
import unittest
|
|
from unittest import mock
|
|
|
|
import koji
|
|
import kojihub
|
|
|
|
QP = kojihub.QueryProcessor
|
|
|
|
|
|
class TestListRpms(unittest.TestCase):
|
|
def setUp(self):
|
|
self.QueryProcessor = mock.patch('kojihub.kojihub.QueryProcessor',
|
|
side_effect=self.get_query).start()
|
|
self.queries = []
|
|
self.get_build = mock.patch('kojihub.kojihub.get_build').start()
|
|
self.get_host = mock.patch('kojihub.kojihub.get_host').start()
|
|
self._dml = mock.patch('kojihub.kojihub._dml').start()
|
|
self.list_rpms = {'arch': 'x86_64',
|
|
'build_id': 1,
|
|
'buildroot_id': 2,
|
|
'buildtime': 1596090711,
|
|
'epoch': 2,
|
|
'external_repo_id': 1,
|
|
'external_repo_name': 'fedora-34-released',
|
|
'extra': None,
|
|
'id': 277,
|
|
'metadata_only': False,
|
|
'name': 'shadow-utils',
|
|
'nvr': 'shadow-utils-4.8.1-4.fc33',
|
|
'payloadhash': 'c5bfe5267dc6e0ca127092a82b4f260b',
|
|
'release': '4.fc33',
|
|
'size': 3891272,
|
|
'version': '4.8.1'}
|
|
|
|
def tearDown(self):
|
|
mock.patch.stopall()
|
|
|
|
def get_query(self, *args, **kwargs):
|
|
query = QP(*args, **kwargs)
|
|
query.execute = mock.MagicMock()
|
|
self.queries.append(query)
|
|
return query
|
|
|
|
def test_wrong_type_arches(self):
|
|
arches = {'test-arch': 'val'}
|
|
with self.assertRaises(koji.GenericError) as cm:
|
|
kojihub.list_rpms(arches=arches)
|
|
self.assertEqual(f'Invalid type for "arches" parameter: {type(arches)}', str(cm.exception))
|
|
|
|
def test_int_values(self):
|
|
build_id = 1
|
|
buildroot_id = 1
|
|
host_id = 1
|
|
arches = 'x86_64'
|
|
kojihub.list_rpms(arches=arches, buildID=build_id, buildrootID=buildroot_id,
|
|
hostID=host_id)
|
|
self.assertEqual(len(self.queries), 1)
|
|
query = self.queries[0]
|
|
self.assertEqual(query.tables, ['rpminfo'])
|
|
self.assertEqual(query.joins,
|
|
['LEFT JOIN external_repo ON rpminfo.external_repo_id = external_repo.id',
|
|
'standard_buildroot ON rpminfo.buildroot_id = '
|
|
'standard_buildroot.buildroot_id'])
|
|
self.assertEqual(query.clauses, [
|
|
'rpminfo.arch = %(arches)s',
|
|
'rpminfo.build_id = %(buildID)i',
|
|
'rpminfo.buildroot_id = %(buildrootID)i',
|
|
'standard_buildroot.host_id = %(hostID)i',
|
|
])
|
|
|
|
def test_compoenent_buldroot_image_list_arch_values(self):
|
|
comp_buildroot_id = 1
|
|
image_id = 1
|
|
arches = ['x86_64']
|
|
kojihub.list_rpms(componentBuildrootID=comp_buildroot_id, imageID=image_id, arches=arches)
|
|
self.assertEqual(len(self.queries), 1)
|
|
query = self.queries[0]
|
|
self.assertEqual(query.tables, ['rpminfo'])
|
|
self.assertEqual(query.joins,
|
|
['LEFT JOIN external_repo ON rpminfo.external_repo_id = external_repo.id',
|
|
'buildroot_listing ON rpminfo.id = buildroot_listing.rpm_id',
|
|
'archive_rpm_components ON rpminfo.id = archive_rpm_components.rpm_id'])
|
|
self.assertEqual(query.clauses, [
|
|
'archive_rpm_components.archive_id = %(imageID)i',
|
|
'buildroot_listing.buildroot_id = %(componentBuildrootID)i',
|
|
'rpminfo.arch IN %(arches)s',
|
|
])
|