MockKeyManager should return a copy of the object instead of actual object

If someone called MockKeyManager.get(context, key_uuid, metadata_only=True),
it would wipe out the key data.

Change-Id: I371eb6e8753725e07558b79e978bad01c65d180c
This commit is contained in:
Kaitlin Farr 2017-05-17 14:58:41 -04:00
parent a216e48710
commit 30427808a3
2 changed files with 19 additions and 1 deletions

View File

@ -27,6 +27,7 @@ this class.
"""
import binascii
import copy
import random
import uuid
@ -176,7 +177,7 @@ class MockKeyManager(key_manager.KeyManager):
if context is None:
raise exception.Forbidden()
obj = self.keys[managed_object_id]
obj = copy.deepcopy(self.keys[managed_object_id])
if metadata_only:
if hasattr(obj, "_key"):
obj._key = None

View File

@ -159,6 +159,23 @@ class MockKeyManagerTestCase(test_key_mgr.KeyManagerTestCase):
self.assertIsNone(actual_key.get_encoded())
self.assertTrue(actual_key.is_metadata_only())
def test_store_key_and_get_metadata_and_get_key(self):
secret_key = bytes(b'0' * 64)
_key = sym_key.SymmetricKey('AES', 64 * 8, secret_key)
key_id = self.key_mgr.store(self.context, _key)
actual_key = self.key_mgr.get(self.context,
key_id,
metadata_only=True)
self.assertIsNone(actual_key.get_encoded())
self.assertTrue(actual_key.is_metadata_only())
actual_key = self.key_mgr.get(self.context,
key_id,
metadata_only=False)
self.assertIsNotNone(actual_key.get_encoded())
self.assertFalse(actual_key.is_metadata_only())
def test_store_null_context(self):
self.assertRaises(exception.Forbidden,
self.key_mgr.store, None, None)