Skip to content

Commit c8364ba

Browse files
committed
Test bucket IAM/ACL methods w/ 'user_project' set. (#4085)
1 parent f7f08e4 commit c8364ba

File tree

1 file changed

+49
-11
lines changed

1 file changed

+49
-11
lines changed

storage/tests/system.py

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -145,37 +145,75 @@ def test_crud_bucket_with_requester_pays(self):
145145
self.assertEqual(created.name, new_bucket_name)
146146
self.assertTrue(created.requester_pays)
147147

148-
with_up = Config.CLIENT.bucket(
148+
with_user_project = Config.CLIENT.bucket(
149149
new_bucket_name, user_project=USER_PROJECT)
150150

151151
# Bucket will be deleted in-line below.
152152
self.case_buckets_to_delete.remove(new_bucket_name)
153153

154154
try:
155155
# Exercise 'buckets.get' w/ userProject.
156-
self.assertTrue(with_up.exists())
157-
with_up.reload()
158-
self.assertTrue(with_up.requester_pays)
156+
self.assertTrue(with_user_project.exists())
157+
with_user_project.reload()
158+
self.assertTrue(with_user_project.requester_pays)
159159

160160
# Exercise 'buckets.patch' w/ userProject.
161-
with_up.configure_website(
161+
with_user_project.configure_website(
162162
main_page_suffix='index.html', not_found_page='404.html')
163-
with_up.patch()
163+
with_user_project.patch()
164164
self.assertEqual(
165-
with_up._properties['website'], {
165+
with_user_project._properties['website'], {
166166
'mainPageSuffix': 'index.html',
167167
'notFoundPage': '404.html',
168168
})
169169

170170
# Exercise 'buckets.update' w/ userProject.
171171
new_labels = {'another-label': 'another-value'}
172-
with_up.labels = new_labels
173-
with_up.update()
174-
self.assertEqual(with_up.labels, new_labels)
172+
with_user_project.labels = new_labels
173+
with_user_project.update()
174+
self.assertEqual(with_user_project.labels, new_labels)
175175

176176
finally:
177177
# Exercise 'buckets.delete' w/ userProject.
178-
with_up.delete()
178+
with_user_project.delete()
179+
180+
@unittest.skipUnless(USER_PROJECT, 'USER_PROJECT not set in environment.')
181+
def test_bucket_acls_iam_with_user_project(self):
182+
new_bucket_name = 'acl-w-user-project' + unique_resource_id('-')
183+
created = Config.CLIENT.create_bucket(
184+
new_bucket_name, requester_pays=True)
185+
self.case_buckets_to_delete.append(new_bucket_name)
186+
187+
with_user_project = Config.CLIENT.bucket(
188+
new_bucket_name, user_project=USER_PROJECT)
189+
190+
# Exercise bucket ACL w/ userProject
191+
acl = with_user_project.acl
192+
acl.reload()
193+
acl.all().grant_read()
194+
acl.save()
195+
self.assertIn('READER', acl.all().get_roles())
196+
del acl.entities['allUsers']
197+
acl.save()
198+
self.assertFalse(acl.has_entity('allUsers'))
199+
200+
# Exercise default object ACL w/ userProject
201+
doa = with_user_project.default_object_acl
202+
doa.reload()
203+
doa.all().grant_read()
204+
doa.save()
205+
self.assertIn('READER', doa.all().get_roles())
206+
207+
# Exercise IAM w/ userProject
208+
test_permissions = ['storage.buckets.get']
209+
self.assertEqual(
210+
with_user_project.test_iam_permissions(test_permissions),
211+
test_permissions)
212+
213+
policy = with_user_project.get_iam_policy()
214+
viewers = policy.setdefault('roles/storage.objectViewer', set())
215+
viewers.add(policy.all_users())
216+
with_user_project.set_iam_policy(policy)
179217

180218

181219
class TestStorageFiles(unittest.TestCase):

0 commit comments

Comments
 (0)