diff options
Diffstat (limited to 'ironic/tests/objects/test_objects.py')
-rw-r--r-- | ironic/tests/objects/test_objects.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/ironic/tests/objects/test_objects.py b/ironic/tests/objects/test_objects.py index c001b906d..1cb67fe26 100644 --- a/ironic/tests/objects/test_objects.py +++ b/ironic/tests/objects/test_objects.py @@ -17,6 +17,7 @@ import datetime import gettext import iso8601 +import mock from oslo_context import context from oslo_versionedobjects import base as object_base from oslo_versionedobjects import exception as object_exception @@ -439,3 +440,48 @@ class TestObjectSerializer(test_base.TestCase): self.assertEqual(1, len(thing2)) for item in thing2: self.assertIsInstance(item, MyObj) + + @mock.patch('ironic.objects.base.IronicObject.indirection_api') + def _test_deserialize_entity_newer(self, obj_version, backported_to, + mock_indirection_api, + my_version='1.6'): + ser = base.IronicObjectSerializer() + mock_indirection_api.object_backport_versions.return_value \ + = 'backported' + + @base.IronicObjectRegistry.register + class MyTestObj(MyObj): + VERSION = my_version + + obj = MyTestObj(self.context) + obj.VERSION = obj_version + primitive = obj.obj_to_primitive() + result = ser.deserialize_entity(self.context, primitive) + if backported_to is None: + self.assertFalse( + mock_indirection_api.object_backport_versions.called) + else: + self.assertEqual('backported', result) + versions = object_base.obj_tree_get_versions('MyTestObj') + mock_indirection_api.object_backport_versions.assert_called_with( + self.context, primitive, versions) + + def test_deserialize_entity_newer_version_backports(self): + "Test object with unsupported (newer) version" + self._test_deserialize_entity_newer('1.25', '1.6') + + def test_deserialize_entity_same_revision_does_not_backport(self): + "Test object with supported revision" + self._test_deserialize_entity_newer('1.6', None) + + def test_deserialize_entity_newer_revision_does_not_backport_zero(self): + "Test object with supported revision" + self._test_deserialize_entity_newer('1.6.0', None) + + def test_deserialize_entity_newer_revision_does_not_backport(self): + "Test object with supported (newer) revision" + self._test_deserialize_entity_newer('1.6.1', None) + + def test_deserialize_entity_newer_version_passes_revision(self): + "Test object with unsupported (newer) version and revision" + self._test_deserialize_entity_newer('1.7', '1.6.1', my_version='1.6.1') |