Skip to content

Commit

Permalink
Removing Bucket.get_default_object_acl.
Browse files Browse the repository at this point in the history
  • Loading branch information
dhermes committed Mar 30, 2015
1 parent adc0029 commit f9f5d6f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 46 deletions.
17 changes: 3 additions & 14 deletions gcloud/storage/bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -477,19 +477,6 @@ def cors(self, entries):
"""
self._patch_properties({'cors': entries})

def get_default_object_acl(self):
"""Get the current Default Object ACL rules.
If the acl isn't available locally, this method will reload it from
Cloud Storage.
:rtype: :class:`gcloud.storage.acl.DefaultObjectACL`
:returns: A DefaultObjectACL object for this bucket.
"""
if not self.default_object_acl.loaded:
self.default_object_acl.reload()
return self.default_object_acl

@property
def etag(self):
"""Retrieve the ETag for the bucket.
Expand Down Expand Up @@ -737,7 +724,9 @@ def make_public(self, recursive=False, future=False):
self.acl.save()

if future:
doa = self.get_default_object_acl()
doa = self.default_object_acl
if not doa.loaded:
doa.reload()
doa.all().grant_read()
doa.save()

Expand Down
57 changes: 25 additions & 32 deletions gcloud/storage/test_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -568,30 +568,6 @@ def upload_from_file(self, fh):
self.assertEqual(found._name, BLOB_NAME)
self.assertTrue(found._bucket is bucket)

def test_get_default_object_acl_lazy(self):
from gcloud.storage.acl import BucketACL
NAME = 'name'
connection = _Connection({'items': []})
bucket = self._makeOne(NAME, connection)
acl = bucket.get_default_object_acl()
self.assertTrue(acl is bucket.default_object_acl)
self.assertTrue(isinstance(acl, BucketACL))
self.assertEqual(list(bucket.default_object_acl), [])
kw = connection._requested
self.assertEqual(len(kw), 1)
self.assertEqual(kw[0]['method'], 'GET')
self.assertEqual(kw[0]['path'], '/b/%s/defaultObjectAcl' % NAME)

def test_get_default_object_acl_eager(self):
connection = _Connection()
bucket = self._makeOne()
preset = bucket.default_object_acl # ensure it is assigned
preset.loaded = True
acl = bucket.get_default_object_acl()
self.assertTrue(acl is preset)
kw = connection._requested
self.assertEqual(len(kw), 0)

def test_etag(self):
ETAG = 'ETAG'
properties = {'etag': ETAG}
Expand Down Expand Up @@ -943,29 +919,46 @@ def test_make_public_defaults(self):
self.assertEqual(kw[0]['data'], {'acl': after['acl']})
self.assertEqual(kw[0]['query_params'], {'projection': 'full'})

def test_make_public_w_future(self):
def _make_public_w_future_helper(self, default_object_acl_loaded=True):
from gcloud.storage.acl import _ACLEntity
NAME = 'name'
permissive = [{'entity': 'allUsers', 'role': _ACLEntity.READER_ROLE}]
after1 = {'acl': permissive, 'defaultObjectAcl': []}
after2 = {'acl': permissive, 'defaultObjectAcl': permissive}
connection = _Connection(after1, after2)
if default_object_acl_loaded:
num_requests = 2
connection = _Connection(after1, after2)
else:
num_requests = 3
# We return the same value for default_object_acl.reload()
# to consume.
connection = _Connection(after1, after1, after2)
bucket = self._makeOne(NAME, connection)
bucket.acl.loaded = True
bucket.default_object_acl.loaded = True
bucket.default_object_acl.loaded = default_object_acl_loaded
bucket.make_public(future=True)
self.assertEqual(list(bucket.acl), permissive)
self.assertEqual(list(bucket.default_object_acl), permissive)
kw = connection._requested
self.assertEqual(len(kw), 2)
self.assertEqual(len(kw), num_requests)
self.assertEqual(kw[0]['method'], 'PATCH')
self.assertEqual(kw[0]['path'], '/b/%s' % NAME)
self.assertEqual(kw[0]['data'], {'acl': permissive})
self.assertEqual(kw[0]['query_params'], {'projection': 'full'})
self.assertEqual(kw[1]['method'], 'PATCH')
self.assertEqual(kw[1]['path'], '/b/%s' % NAME)
self.assertEqual(kw[1]['data'], {'defaultObjectAcl': permissive})
self.assertEqual(kw[1]['query_params'], {'projection': 'full'})
if not default_object_acl_loaded:
self.assertEqual(kw[1]['method'], 'GET')
self.assertEqual(kw[1]['path'], '/b/%s/defaultObjectAcl' % NAME)
# Last could be 1 or 2 depending on `default_object_acl_loaded`.
self.assertEqual(kw[-1]['method'], 'PATCH')
self.assertEqual(kw[-1]['path'], '/b/%s' % NAME)
self.assertEqual(kw[-1]['data'], {'defaultObjectAcl': permissive})
self.assertEqual(kw[-1]['query_params'], {'projection': 'full'})

def test_make_public_w_future(self):
self._make_public_w_future_helper(default_object_acl_loaded=True)

def test_make_public_w_future_reload_default(self):
self._make_public_w_future_helper(default_object_acl_loaded=False)

def test_make_public_recursive(self):
from gcloud.storage.acl import _ACLEntity
Expand Down

0 comments on commit f9f5d6f

Please sign in to comment.