PR#3064: queryRPMSigs accepts RPM ID, NVRA and dict
Merges #3064 https://pagure.io/koji/pull-request/3064 Fixes: #3061 https://pagure.io/koji/issue/3061 queryRPMSigs only accepts RPM IDs (ints), not RPM names
This commit is contained in:
commit
5abb84c01d
2 changed files with 72 additions and 1 deletions
|
|
@ -7800,7 +7800,9 @@ def check_rpm_sig(an_rpm, sigkey, sighdr):
|
|||
def query_rpm_sigs(rpm_id=None, sigkey=None, queryOpts=None):
|
||||
"""Queries db for rpm signatures
|
||||
|
||||
:param int rpm_id: rpm ID
|
||||
:param rpm_id: a int RPM ID,
|
||||
a string N-V-R.A,
|
||||
a map containing 'name', 'version', 'release', and 'arch'
|
||||
:param int sigkey: signature key hash
|
||||
:param queryOpts: query options used by the QueryProcessor.
|
||||
|
||||
|
|
@ -7808,6 +7810,12 @@ def query_rpm_sigs(rpm_id=None, sigkey=None, queryOpts=None):
|
|||
"""
|
||||
fields = ('rpm_id', 'sigkey', 'sighash')
|
||||
clauses = []
|
||||
if rpm_id is not None and not isinstance(rpm_id, int):
|
||||
rpminfo = get_rpm(rpm_id)
|
||||
if rpminfo:
|
||||
rpm_id = rpminfo['id']
|
||||
else:
|
||||
return []
|
||||
if rpm_id is not None:
|
||||
clauses.append("rpm_id=%(rpm_id)s")
|
||||
if sigkey is not None:
|
||||
|
|
|
|||
63
tests/test_hub/test_query_rpm_sigs.py
Normal file
63
tests/test_hub/test_query_rpm_sigs.py
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import unittest
|
||||
|
||||
import mock
|
||||
|
||||
import kojihub
|
||||
|
||||
QP = kojihub.QueryProcessor
|
||||
|
||||
|
||||
class TestQueryRPMSigs(unittest.TestCase):
|
||||
|
||||
def getQuery(self, *args, **kwargs):
|
||||
query = QP(*args, **kwargs)
|
||||
query.execute = mock.MagicMock()
|
||||
self.queries.append(query)
|
||||
return query
|
||||
|
||||
def setUp(self):
|
||||
self.QueryProcessor = mock.patch('kojihub.QueryProcessor',
|
||||
side_effect=self.getQuery).start()
|
||||
self.queries = []
|
||||
self.get_rpm = mock.patch('kojihub.get_rpm').start()
|
||||
self.rinfo = {'arch': 'x86_64',
|
||||
'build_id': 1,
|
||||
'buildroot_id': None,
|
||||
'buildtime': 1564782768,
|
||||
'epoch': None,
|
||||
'external_repo_id': None,
|
||||
'extra': None,
|
||||
'id': 1234,
|
||||
'metadata_only': False,
|
||||
'name': 'fs_mark',
|
||||
'payloadhash': 'ed0690ab4b0508f2448d99a08e0a004a',
|
||||
'release': '20.el8',
|
||||
'size': 25644,
|
||||
'version': '3.3'}
|
||||
|
||||
def test_rpm_dict(self):
|
||||
rinfo_dict = {
|
||||
'arch': 'x86_64',
|
||||
'name': 'fs_mark',
|
||||
'release': '20.el8',
|
||||
'version': '3.3'
|
||||
}
|
||||
self.get_rpm.return_value = self.rinfo
|
||||
kojihub.query_rpm_sigs(rpm_id=rinfo_dict)
|
||||
self.get_rpm.assert_called_once_with(rinfo_dict)
|
||||
|
||||
def test_rpm_nvra(self):
|
||||
nvra = 'fs_mark-3.3-20.el8.x86_64'
|
||||
self.get_rpm.return_value = self.rinfo
|
||||
kojihub.query_rpm_sigs(rpm_id=nvra)
|
||||
self.get_rpm.assert_called_once_with(nvra)
|
||||
|
||||
def test_rpm_int(self):
|
||||
rpm_id = 1234
|
||||
kojihub.query_rpm_sigs(rpm_id=rpm_id)
|
||||
self.get_rpm.assert_not_called()
|
||||
|
||||
def test_rpm_str_int(self):
|
||||
rpm_id = '1234'
|
||||
kojihub.query_rpm_sigs(rpm_id=rpm_id)
|
||||
self.get_rpm.assert_called_once_with(rpm_id)
|
||||
Loading…
Add table
Add a link
Reference in a new issue