From 4925356be6f0f347b36119a981fefdd9c5c29ac8 Mon Sep 17 00:00:00 2001 From: melanie witt Date: Wed, 14 Feb 2024 20:47:21 +0000 Subject: [PATCH] Raise ManagedObjectNotFoundError in MockKeyManager Currently the MockKeyManager raises KeyError when a key is not found for a get() or delete() but a real key manager raises ManagedObjectNotFoundError in the case of not found [1][2]. This updates the MockKeyManager to raise the same exception as a real key manager so that projects using it in tests will be able to test their handling of "not found" scenarios properly. [1] https://github.com/openstack/castellan/blob/a662b307641ddf554292e1e783385f40032fde49/castellan/key_manager/barbican_key_manager.py#L617 [2] https://github.com/openstack/castellan/blob/a662b307641ddf554292e1e783385f40032fde49/castellan/key_manager/barbican_key_manager.py#L644 Change-Id: I3184a229f6690854dda1edc12e74bb483b47a057 --- .../tests/unit/key_manager/mock_key_manager.py | 11 +++++++++-- .../unit/key_manager/test_mock_key_manager.py | 14 +++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/castellan/tests/unit/key_manager/mock_key_manager.py b/castellan/tests/unit/key_manager/mock_key_manager.py index ab463834..688e9492 100644 --- a/castellan/tests/unit/key_manager/mock_key_manager.py +++ b/castellan/tests/unit/key_manager/mock_key_manager.py @@ -178,7 +178,11 @@ class MockKeyManager(key_manager.KeyManager): if context is None: raise exception.Forbidden() - obj = copy.deepcopy(self.keys[managed_object_id]) + try: + obj = copy.deepcopy(self.keys[managed_object_id]) + except KeyError: + raise exception.ManagedObjectNotFoundError() + if metadata_only: if hasattr(obj, "_key"): obj._key = None @@ -197,7 +201,10 @@ class MockKeyManager(key_manager.KeyManager): if context is None: raise exception.Forbidden() - del self.keys[managed_object_id] + try: + del self.keys[managed_object_id] + except KeyError: + raise exception.ManagedObjectNotFoundError() def add_consumer(self, context, managed_object_id, consumer_data): if context is None: diff --git a/castellan/tests/unit/key_manager/test_mock_key_manager.py b/castellan/tests/unit/key_manager/test_mock_key_manager.py index d03e756f..a79232ca 100644 --- a/castellan/tests/unit/key_manager/test_mock_key_manager.py +++ b/castellan/tests/unit/key_manager/test_mock_key_manager.py @@ -201,22 +201,26 @@ class MockKeyManagerTestCase(test_key_mgr.KeyManagerTestCase): self.key_mgr.get, None, None) def test_get_unknown_key(self): - self.assertRaises(KeyError, self.key_mgr.get, self.context, None) + self.assertRaises( + exception.ManagedObjectNotFoundError, self.key_mgr.get, + self.context, None) def test_delete_key(self): key_id = self.key_mgr.create_key(self.context) self.key_mgr.delete(self.context, key_id) - self.assertRaises(KeyError, self.key_mgr.get, self.context, - key_id) + self.assertRaises( + exception.ManagedObjectNotFoundError, self.key_mgr.get, + self.context, key_id) def test_delete_null_context(self): self.assertRaises(exception.Forbidden, self.key_mgr.delete, None, None) def test_delete_unknown_key(self): - self.assertRaises(KeyError, self.key_mgr.delete, self.context, - None) + self.assertRaises( + exception.ManagedObjectNotFoundError, self.key_mgr.delete, + self.context, None) def test_list_null_context(self): self.assertRaises(exception.Forbidden, self.key_mgr.list, None)