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:
parent
a216e48710
commit
30427808a3
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue