diff --git a/gcloud/storage/bucket.py b/gcloud/storage/bucket.py index e90b85c60ab6..9a5991d73eb9 100644 --- a/gcloud/storage/bucket.py +++ b/gcloud/storage/bucket.py @@ -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. @@ -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() diff --git a/gcloud/storage/test_bucket.py b/gcloud/storage/test_bucket.py index e3e1683b210f..344bed92584a 100644 --- a/gcloud/storage/test_bucket.py +++ b/gcloud/storage/test_bucket.py @@ -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} @@ -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