Skip to content

Commit dcaae75

Browse files
committed
Ensure that Key.rename actually deletes old key as documents.
Incorporate feedback from @dhermes.
1 parent d4fe9bf commit dcaae75

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

gcloud/storage/key.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,9 @@ def rename(self, new_name):
146146
:rtype: :class:`Key`
147147
:returns: The newly-copied key.
148148
"""
149-
return self.bucket.copy_key(self, self.bucket, new_name)
149+
new_key = self.bucket.copy_key(self, self.bucket, new_name)
150+
self.bucket.delete_key(self)
151+
return new_key
150152

151153
def delete(self):
152154
"""Deletes a key from Cloud Storage.

gcloud/storage/test_key.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,10 @@ def test_rename(self):
104104
bucket._keys[KEY] = 1
105105
orig_key_path = key.path
106106
new_key = key.rename(NEW_NAME)
107-
expected = [
108-
['POST', orig_key_path + '/copyTo/b/bucket/o/%s' % NEW_NAME, None],
109-
['DELETE', orig_key_path, None]]
110107
self.assertEqual(key.name, KEY)
111108
self.assertEqual(new_key.name, NEW_NAME)
112109
self.assertFalse(KEY in bucket._keys)
110+
self.assertTrue(KEY in bucket._deleted)
113111
self.assertTrue(NEW_NAME in bucket._keys)
114112

115113
def test_delete(self):
@@ -607,13 +605,15 @@ class _Bucket(object):
607605
def __init__(self, connection):
608606
self.connection = connection
609607
self._keys = {}
608+
self._deleted = []
610609

611610
def get_key(self, key):
612611
return self._keys.get(key) # XXX s.b. 'key.name'?
613612

614613
def copy_key(self, key, destination_bucket, new_name):
615-
destination_bucket._keys[new_name] = self._keys.pop(key.name)
614+
destination_bucket._keys[new_name] = self._keys[key.name]
616615
return key.from_dict({'name': new_name}, bucket=destination_bucket)
617616

618617
def delete_key(self, key):
619618
del self._keys[key.name] # XXX s.b. 'key'?
619+
self._deleted.append(key.name)

0 commit comments

Comments
 (0)