@@ -147,6 +147,12 @@ public function testListBuckets()
147147 $ this ->assertStringContainsString ('Bucket: ' , $ output );
148148 }
149149
150+ public function testListSoftDeletedBuckets ()
151+ {
152+ $ output = $ this ->runFunctionSnippet ('list_soft_deleted_buckets ' );
153+ $ this ->assertStringContainsString ('Bucket: ' , $ output );
154+ }
155+
150156 public function testCreateGetDeleteBuckets ()
151157 {
152158 $ bucketName = sprintf ('test-bucket-%s-%s ' , time (), rand ());
@@ -559,6 +565,7 @@ public function testObjectGetKmsKey(string $objectName)
559565 $ output ,
560566 );
561567 }
568+
562569 public function testBucketVersioning ()
563570 {
564571 $ output = self ::runFunctionSnippet ('enable_versioning ' , [
@@ -860,6 +867,7 @@ public function testCreateBucketHnsEnabled()
860867 $ output
861868 );
862869 $ this ->assertTrue ($ info ['hierarchicalNamespace ' ]['enabled ' ]);
870+ $ this ->runFunctionSnippet ('delete_bucket ' , [$ bucketName ]);
863871 }
864872
865873 public function testObjectCsekToCmek ()
@@ -938,6 +946,50 @@ public function testGetBucketWithAutoclass()
938946 );
939947 }
940948
949+ public function testGetRestoreSoftDeletedBucket ()
950+ {
951+ $ bucketName = sprintf ('test-soft-deleted-bucket-%s-%s ' , time (), rand ());
952+ $ bucket = self ::$ storage ->createBucket ($ bucketName );
953+
954+ $ this ->assertTrue ($ bucket ->exists ());
955+ $ generation = $ bucket ->info ()['generation ' ];
956+ $ bucket ->delete ();
957+
958+ $ this ->assertFalse ($ bucket ->exists ());
959+
960+ $ options = ['generation ' => $ generation , 'softDeleted ' => true ];
961+ $ softDeletedBucket = self ::$ storage ->bucket ($ bucketName );
962+ $ info = $ softDeletedBucket ->info ($ options );
963+
964+ $ output = self ::runFunctionSnippet ('get_soft_deleted_bucket ' , [
965+ $ bucketName ,
966+ $ generation
967+ ]);
968+ $ outputString = <<<EOF
969+ Bucket: {$ bucketName }
970+ Generation: {$ info ['generation ' ]}
971+ SoftDeleteTime: {$ info ['softDeleteTime ' ]}
972+ HardDeleteTime: {$ info ['hardDeleteTime ' ]}
973+
974+ EOF ;
975+ $ this ->assertEquals ($ outputString , $ output );
976+
977+ $ output = self ::runFunctionSnippet ('restore_soft_deleted_bucket ' , [
978+ $ bucketName ,
979+ $ generation
980+ ]);
981+
982+ $ this ->assertTrue ($ bucket ->exists ());
983+ $ this ->assertEquals (
984+ sprintf (
985+ 'Soft deleted bucket %s was restored. ' . PHP_EOL ,
986+ $ bucketName
987+ ),
988+ $ output
989+ );
990+ $ this ->runFunctionSnippet ('delete_bucket ' , [$ bucketName ]);
991+ }
992+
941993 public function testSetBucketWithAutoclass ()
942994 {
943995 $ bucket = self ::$ storage ->createBucket (uniqid ('samples-set-autoclass- ' ), [
0 commit comments