Skip to content

Commit acc2b58

Browse files
authored
fix: plumb soft_deleted option for grpc GetObject (#679)
* fix: plumb soft_deleted option for grpc GetObject * lint * lint
1 parent deb04f3 commit acc2b58

2 files changed

Lines changed: 38 additions & 0 deletions

File tree

testbench/grpc_server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,7 @@ def GetObject(self, request, context):
507507
context=context,
508508
generation=request.generation,
509509
preconditions=testbench.common.make_grpc_preconditions(request),
510+
soft_deleted=request.soft_deleted,
510511
)
511512
return blob.metadata
512513

tests/test_grpc_server.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)