Fix editSidetag fstring variable formats and fix test unit tests
Fixes: https://pagure.io/koji/issue/3748
This commit is contained in:
parent
b208e77f6a
commit
889770e74c
2 changed files with 162 additions and 5 deletions
|
|
@ -290,7 +290,7 @@ def editSideTag(sidetag, debuginfo=None, rpm_macros=None, remove_rpm_macros=None
|
|||
f"{type(rpm_macros_allowed)}")
|
||||
for macro in rpm_macros_allowed:
|
||||
if not isinstance(macro, str):
|
||||
raise koji.GenericError(f"Allowed rpm macro list {rpm_macros_allowed:r} "
|
||||
raise koji.GenericError(f"Allowed rpm macro list {rpm_macros_allowed!r} "
|
||||
f"is invalid for {parent['name']}.")
|
||||
|
||||
if not rpm_macros_allowed:
|
||||
|
|
@ -303,7 +303,7 @@ def editSideTag(sidetag, debuginfo=None, rpm_macros=None, remove_rpm_macros=None
|
|||
convert_value(rpm_macros, cast=dict, check_only=True)
|
||||
for macro, value in rpm_macros.items():
|
||||
if not _valid_rpm_macro_name(macro):
|
||||
raise koji.GenericError(f"Invalid macro name {macro:r}")
|
||||
raise koji.GenericError(f"Invalid macro name {macro!r}")
|
||||
if not multi_fnmatch(macro, rpm_macros_allowed):
|
||||
raise koji.GenericError(f"RPM macro {macro} editing is not allowed via parent tag")
|
||||
kwargs['extra']['rpm.macro.%s' % macro] = value
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ class TestEditSideTagHub(unittest.TestCase):
|
|||
self._edit_tag = mock.patch('sidetag_hub._edit_tag').start()
|
||||
self.sidetag = 'base_tag-sidetag-12346-suffix'
|
||||
self.user_info = {
|
||||
'id': 23,
|
||||
'id': 1,
|
||||
'name': 'username',
|
||||
}
|
||||
self.sidetag_info = {
|
||||
|
|
@ -414,10 +414,13 @@ class TestEditSideTagHub(unittest.TestCase):
|
|||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_valid(self):
|
||||
def test_edit_sidetag_rpm_macros_list(self):
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed': True}}
|
||||
'sidetag_rpm_macros_allowed':
|
||||
['macro_1_name', 'macro_2_name']},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
|
|
@ -435,6 +438,160 @@ class TestEditSideTagHub(unittest.TestCase):
|
|||
'rpm.macro.macro_1_name': 'macro_1_value'},
|
||||
remove_extra=['rpm.macro.macro_2_name'])
|
||||
|
||||
def test_edit_sidetag_remove_rpm_macros_not_allowed(self):
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed':
|
||||
['macro_1_name', 'macro_2_name']},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, debuginfo=True,
|
||||
remove_rpm_macros=['macro_2_name2'])
|
||||
self.assertEqual("RPM macro macro_2_name2 editing is not allowed via parent tag",
|
||||
str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_invalid_macro_name(self):
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed':
|
||||
['#macro_1_name', 'macro_2_name']},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, rpm_macros={'#macro_1_name': 'macro_1_value'})
|
||||
self.assertEqual("Invalid macro name '#macro_1_name'", str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_not_allowed_2(self):
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed':
|
||||
'macro_1_name macro_2_name'},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, rpm_macros={'macro_1_name1': 'macro_1_value1'})
|
||||
self.assertEqual("RPM macro macro_1_name1 editing is not allowed via parent tag",
|
||||
str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_none(self):
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed': None},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, debuginfo=True,
|
||||
rpm_macros={'macro_1_name': 'macro_1_value'},
|
||||
remove_rpm_macros=['macro_2_name'])
|
||||
self.assertEqual("RPM macros change is not allowed in parent tag.", str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_dict(self):
|
||||
rpm_macros_allowed = {'name': 'test'}
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed': rpm_macros_allowed},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, debuginfo=True,
|
||||
rpm_macros={'macro_1_name': 'macro_1_value'},
|
||||
remove_rpm_macros=['macro_2_name'])
|
||||
self.assertEqual(f"rpm_macros_allowed in {parent_info['name']} has invalid "
|
||||
f"type: {type(rpm_macros_allowed)}", str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_rpm_macros_string_split_lists(self):
|
||||
rpm_macros_allowed = [1, 2, 3]
|
||||
read_inheritance_data = [{'parent_id': 999}]
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed': rpm_macros_allowed},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 23
|
||||
self.get_user.return_value = self.user_info
|
||||
self.read_inheritance_data.return_value = read_inheritance_data
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, debuginfo=True,
|
||||
rpm_macros={'macro_1_name': 'macro_1_value'},
|
||||
remove_rpm_macros=['macro_2_name'])
|
||||
self.assertEqual(f"Allowed rpm macro list {rpm_macros_allowed!r} is invalid "
|
||||
f"for {parent_info['name']}.", str(ex.exception))
|
||||
|
||||
self.get_user.assert_called_once_with(23, strict=True)
|
||||
self.get_tag.assert_has_calls([mock.call(self.sidetag, strict=True), mock.call(999)])
|
||||
self.read_inheritance_data.assert_called_once_with(self.sidetag_info['id'])
|
||||
self._edit_tag.assert_not_called()
|
||||
|
||||
def test_edit_sidetag_extra_without_perms(self):
|
||||
parent_info = {'id': 999, 'extra': {'sidetag_debuginfo_allowed': True,
|
||||
'sidetag_rpm_macros_allowed':
|
||||
['macro_1_name', 'macro_2_name']},
|
||||
'name': 'tag'
|
||||
}
|
||||
self.context.session.assertLogin = mock.MagicMock()
|
||||
self.context.session.user_id = 1
|
||||
self.context.session.hasPerm = mock.MagicMock()
|
||||
self.context.session.hasPerm.side_effect = [False, False]
|
||||
self.get_user.return_value = self.user_info
|
||||
self.get_tag.side_effect = [self.sidetag_info, parent_info]
|
||||
with self.assertRaises(koji.GenericError) as ex:
|
||||
sidetag_hub.editSideTag(self.sidetag, debuginfo=True,
|
||||
extra={'macro_1_name': 'macro_1_value'})
|
||||
self.assertEqual("Extra can be modified only with sidetag_admin or admin permissions.",
|
||||
str(ex.exception))
|
||||
|
||||
|
||||
class TestSideTagUntagHub(unittest.TestCase):
|
||||
def setUp(self):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue