PR#2517: lib: better argument checking for eventFromOpts

Merges #2517
https://pagure.io/koji/pull-request/2517

Fixes: #2513
https://pagure.io/koji/issue/2513
eventFromOpts is not handling missing/wrong values well
This commit is contained in:
Tomas Kopecek 2021-01-04 10:43:37 +01:00
commit 58ec59314c
2 changed files with 12 additions and 9 deletions

View file

@ -599,14 +599,13 @@ def eventFromOpts(session, opts):
if event_id:
return session.getEvent(event_id)
ts = getattr(opts, 'ts')
if ts:
if ts is not None:
return session.getLastEvent(before=ts)
repo = getattr(opts, 'repo')
if repo:
rinfo = session.repoInfo(repo)
if rinfo:
return {'id': rinfo['create_event'],
'ts': rinfo['create_ts']}
if repo is not None:
rinfo = session.repoInfo(repo, strict=True)
return {'id': rinfo['create_event'],
'ts': rinfo['create_ts']}
return None

View file

@ -1121,11 +1121,11 @@ class MavenUtilTestCase(unittest.TestCase):
self.assertEqual(None, koji.util.eventFromOpts(session, opts))
# opts.ts = timestamp
opts = mock.MagicMock(event='', ts=timestamp)
opts = mock.MagicMock(event=None, ts=timestamp)
self.assertEqual(event, koji.util.eventFromOpts(session, opts))
# opts.repo = '1'
opts = mock.MagicMock(event='', ts='', repo=1)
opts = mock.MagicMock(event=None, ts=None, repo=1)
expect = {'id': repo_info['create_event'],
'ts': repo_info['create_ts']}
@ -1134,9 +1134,13 @@ class MavenUtilTestCase(unittest.TestCase):
six.assertCountEqual(self, list(expect.items()), list(actual.items()))
# no event is matched case
opts = mock.MagicMock(event=0, ts=0, repo=0)
opts = mock.MagicMock(event=None, ts=None, repo=None)
self.assertEqual(None, koji.util.eventFromOpts(session, opts))
# special case for ts 0
opts = mock.MagicMock(event=None, ts=0, repo=None)
self.assertEqual(event, koji.util.eventFromOpts(session, opts))
def test_setup_rlimits(self):
"""Test test_setup_rlimits function"""
logger = mock.MagicMock()