@@ -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
181219class TestStorageFiles (unittest .TestCase ):
0 commit comments