@@ -1005,6 +1005,43 @@ def test_get_object(self):
10051005 self .assertNotEqual (0 , response .generation )
10061006 self .assertEqual (response .size , len (media ))
10071007
1008+ def test_get_object_soft_deleted (self ):
1009+ request = testbench .common .FakeRequest (
1010+ args = {},
1011+ data = json .dumps (
1012+ {
1013+ "name" : "sd-bucket-name" ,
1014+ "softDeletePolicy" : {"retentionDurationSeconds" : 7 * 24 * 60 * 60 },
1015+ }
1016+ ),
1017+ )
1018+ sd_bucket , _ = gcs .bucket .Bucket .init (request , None )
1019+ self .db .insert_bucket (sd_bucket , None )
1020+
1021+ media = b"The quick brown fox jumps over the lazy dog"
1022+ request = testbench .common .FakeRequest (
1023+ args = {"name" : "object-to-delete" }, data = media , headers = {}, environ = {}
1024+ )
1025+ blob , _ = gcs .object .Object .init_media (request , sd_bucket .metadata )
1026+ self .db .insert_object ("sd-bucket-name" , blob , None )
1027+
1028+ self .db .delete_object ("sd-bucket-name" , "object-to-delete" )
1029+
1030+ context = unittest .mock .Mock ()
1031+ response = self .grpc .GetObject (
1032+ storage_pb2 .GetObjectRequest (
1033+ bucket = "projects/_/buckets/sd-bucket-name" ,
1034+ object = "object-to-delete" ,
1035+ soft_deleted = True ,
1036+ generation = blob .metadata .generation ,
1037+ ),
1038+ context ,
1039+ )
1040+ self .assertEqual (response .bucket , "projects/_/buckets/sd-bucket-name" )
1041+ self .assertEqual (response .name , "object-to-delete" )
1042+ self .assertNotEqual (0 , response .generation )
1043+ self .assertEqual (response .size , len (media ))
1044+
10081045 @staticmethod
10091046 def _create_block (desired_bytes ):
10101047 line = "A" * 127 + "\n "
0 commit comments