summaryrefslogtreecommitdiff
path: root/ironic/tests/objects/test_objects.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/objects/test_objects.py')
-rw-r--r--ironic/tests/objects/test_objects.py46
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')