File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3424,6 +3424,40 @@ mod tests {
34243424 request_receiver. expect_no_request ( ) ;
34253425 }
34263426
3427+ #[ tokio:: test]
3428+ async fn delete_objects_with_partial_errors_returns_deleted_keys ( ) {
3429+ let response = http:: Response :: builder ( )
3430+ . status ( 200 )
3431+ . body ( SdkBody :: from (
3432+ r#"<?xml version="1.0" encoding="UTF-8"?>
3433+ <DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
3434+ <Deleted>
3435+ <Key>kept.txt</Key>
3436+ </Deleted>
3437+ <Error>
3438+ <Key>failed.txt</Key>
3439+ <Code>AccessDenied</Code>
3440+ <Message>Access Denied</Message>
3441+ </Error>
3442+ </DeleteResult>"# ,
3443+ ) )
3444+ . expect ( "build partial delete response" ) ;
3445+ let ( client, request_receiver) = test_s3_client ( Some ( response) ) ;
3446+
3447+ let deleted = client
3448+ . delete_objects_with_options (
3449+ "bucket" ,
3450+ vec ! [ "kept.txt" . to_string( ) , "failed.txt" . to_string( ) ] ,
3451+ DeleteRequestOptions :: default ( ) ,
3452+ )
3453+ . await
3454+ . expect ( "partial delete should still return deleted keys" ) ;
3455+
3456+ let request = request_receiver. expect_request ( ) ;
3457+ assert_eq ! ( request. uri( ) , "https://example.com/bucket/?delete" ) ;
3458+ assert_eq ! ( deleted, vec![ "kept.txt" . to_string( ) ] ) ;
3459+ }
3460+
34273461 #[ tokio:: test]
34283462 async fn read_next_part_fills_buffer_until_eof ( ) {
34293463 use tokio:: io:: AsyncWriteExt ;
You can’t perform that action at this time.
0 commit comments