debian-koji/tests/test_hub/test_list_rpms.py
Yuming Zhu ca05418fb5 unittest: use unittest.mock instead of mock
because the absence of unittest.mock on python2.7, we still fallback to
mock
2024-10-23 16:35:30 +00:00

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',
])