From 4a214437ee5dc585e266c63deef96331f7ada8d5 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Aug 07 2018 20:09:07 +0000 Subject: PR#1016: raise Error when user not found in getBuildNotifications Merges #1016 https://pagure.io/koji/pull-request/1016 Fixes: #1013 https://pagure.io/koji/issue/1013 getBuildNotifications API call should raise GenericError exception for non existing user ID --- diff --git a/hub/kojihub.py b/hub/kojihub.py index 22dd484..6fa1c6a 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -11004,15 +11004,11 @@ class RootExports(object): def getBuildNotifications(self, userID=None): - """Get build notifications for the user with the given ID. If no ID - is specified, get the notifications for the currently logged-in user. If - there is no currently logged-in user, raise a GenericError.""" - if userID is None: - user = self.getLoggedInUser() - if user is None: - raise koji.GenericError('not logged-in') - else: - userID = user['id'] + """Get build notifications for the user with the given ID, name or + Kerberos principal. If no user is specified, get the notifications for + the currently logged-in user. If there is no currently logged-in user, + raise a GenericError.""" + userID = get_user(userID, strict=True)['id'] return get_build_notifications(userID) def getBuildNotification(self, id): diff --git a/tests/test_hub/test_get_build_notifications.py b/tests/test_hub/test_get_build_notifications.py new file mode 100644 index 0000000..d0ab7d6 --- /dev/null +++ b/tests/test_hub/test_get_build_notifications.py @@ -0,0 +1,27 @@ +import mock +try: + import unittest2 as unittest +except ImportError: + import unittest +import koji +import kojihub + + +class TestGetBuildNotifications(unittest.TestCase): + + + @mock.patch('kojihub.get_user', return_value={'id': 1}) + @mock.patch('kojihub.get_build_notifications') + def test_loggedin_user(self, get_build_notifications, get_user): + kojihub.RootExports().getBuildNotifications(None) + get_user.assert_called_once_with(None, strict=True) + get_build_notifications.assert_called_once_with(1) + + @mock.patch('kojihub.get_user', side_effect=koji.GenericError('error msg')) + @mock.patch('kojihub.get_build_notifications') + def test_user_not_found(self, get_build_notifications, get_user): + with self.assertRaises(koji.GenericError) as cm: + kojihub.RootExports().getBuildNotifications(1) + get_user.assert_called_once_with(1, strict=True) + get_build_notifications.assert_not_called() + self.assertEqual(cm.exception.args[0], 'error msg')