2828from test_utils .system import unique_resource_id
2929
3030
31+ USER_PROJECT = os .environ .get ('GOOGLE_CLOUD_TESTS_USER_PROJECT' )
32+
33+
3134def _bad_copy (bad_request ):
3235 """Predicate: pass only exceptions for a failed copyTo."""
3336 err_msg = bad_request .message
@@ -83,10 +86,11 @@ def setUp(self):
8386 self .case_buckets_to_delete = []
8487
8588 def tearDown (self ):
86- with Config .CLIENT .batch ():
87- for bucket_name in self .case_buckets_to_delete :
88- bucket = Config .CLIENT .bucket (bucket_name )
89- retry_429 (bucket .delete )()
89+ if self .case_buckets_to_delete :
90+ with Config .CLIENT .batch ():
91+ for bucket_name in self .case_buckets_to_delete :
92+ bucket = Config .CLIENT .bucket (bucket_name )
93+ retry_429 (bucket .delete )()
9094
9195 def test_create_bucket (self ):
9296 new_bucket_name = 'a-new-bucket' + unique_resource_id ('-' )
@@ -96,14 +100,6 @@ def test_create_bucket(self):
96100 self .case_buckets_to_delete .append (new_bucket_name )
97101 self .assertEqual (created .name , new_bucket_name )
98102
99- def test_create_bucket_with_requester_pays (self ):
100- new_bucket_name = 'w-requester-pays' + unique_resource_id ('-' )
101- created = Config .CLIENT .create_bucket (
102- new_bucket_name , requester_pays = True )
103- self .case_buckets_to_delete .append (new_bucket_name )
104- self .assertEqual (created .name , new_bucket_name )
105- self .assertTrue (created .requester_pays )
106-
107103 def test_list_buckets (self ):
108104 buckets_to_create = [
109105 'new' + unique_resource_id (),
@@ -142,6 +138,47 @@ def test_bucket_update_labels(self):
142138 bucket .update ()
143139 self .assertEqual (bucket .labels , {})
144140
141+ @unittest .skipUnless (USER_PROJECT , 'USER_PROJECT not set in environment.' )
142+ def test_crud_bucket_with_requester_pays (self ):
143+ new_bucket_name = 'w-requester-pays' + unique_resource_id ('-' )
144+ created = Config .CLIENT .create_bucket (
145+ new_bucket_name , requester_pays = True )
146+ self .case_buckets_to_delete .append (new_bucket_name )
147+ self .assertEqual (created .name , new_bucket_name )
148+ self .assertTrue (created .requester_pays )
149+
150+ with_up = Config .CLIENT .bucket (
151+ new_bucket_name , user_project = USER_PROJECT )
152+
153+ # Bucket will be deleted in-line below.
154+ self .case_buckets_to_delete .remove (new_bucket_name )
155+
156+ try :
157+ # Exercise 'buckets.get' w/ userProject.
158+ self .assertTrue (with_up .exists ())
159+ with_up .reload ()
160+ self .assertTrue (with_up .requester_pays )
161+
162+ # Exercise 'buckets.patch' w/ userProject.
163+ with_up .configure_website (
164+ main_page_suffix = 'index.html' , not_found_page = '404.html' )
165+ with_up .patch ()
166+ self .assertEqual (
167+ with_up ._properties ['website' ], {
168+ 'mainPageSuffix' : 'index.html' ,
169+ 'notFoundPage' : '404.html' ,
170+ })
171+
172+ # Exercise 'buckets.update' w/ userProject.
173+ new_labels = {'another-label' : 'another-value' }
174+ with_up .labels = new_labels
175+ with_up .update ()
176+ self .assertEqual (with_up .labels , new_labels )
177+
178+ finally :
179+ # Exercise 'buckets.delete' w/ userProject.
180+ with_up .delete ()
181+
145182
146183class TestStorageFiles (unittest .TestCase ):
147184
0 commit comments