From 472b7da883354d6f4efd47d779b04930f64c82ca Mon Sep 17 00:00:00 2001 From: Jana Cupova Date: Mar 31 2021 10:28:27 +0000 Subject: api: getVolume with strict Fixes: https://pagure.io/koji/issue/1592 --- diff --git a/hub/kojihub.py b/hub/kojihub.py index eba3fff..efd87e4 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -10708,7 +10708,10 @@ class RootExports(object): volume, or None if no match. If strict is true, raises an error if no match. """ - return lookup_name('volume', volume, strict=strict) + result = lookup_name('volume', volume) + if not result and strict: + raise koji.GenericError("No such volume: %s" % volume) + return result def applyVolumePolicy(self, build, strict=False): """Apply the volume policy to a given build diff --git a/tests/test_hub/test_get_volume.py b/tests/test_hub/test_get_volume.py new file mode 100644 index 0000000..fb2c944 --- /dev/null +++ b/tests/test_hub/test_get_volume.py @@ -0,0 +1,32 @@ +import unittest +import mock + +import koji +import kojihub + + +class TestGetVolume(unittest.TestCase): + + def setUp(self): + self.exports = kojihub.RootExports() + self.lookup_name = mock.patch('kojihub.lookup_name').start() + + def test_non_exist_volume_with_strict(self): + volume = ['test-volume'] + self.lookup_name.return_value = None + with self.assertRaises(koji.GenericError) as cm: + self.exports.getVolume(volume, strict=True) + self.assertEqual("No such volume: %s" % volume, str(cm.exception)) + + def test_non_exist_volume_with_strict(self): + volume = ['test-volume'] + self.lookup_name.return_value = None + result = self.exports.getVolume(volume) + self.assertEqual(None, result) + + def test_valid_volume(self): + volume = ['test-volume'] + volume_dict = {'id': 0, 'name': 'DEFAULT'} + self.lookup_name.return_value = volume_dict + result = self.exports.getVolume(volume) + self.assertEqual(volume_dict, result)