@@ -738,6 +738,18 @@ func TestDeleteObject(t *testing.T) {
738738 t .Fatalf ("Unexpected error, got: %v" , err )
739739 }
740740 })
741+
742+ t .Run ("object_access_denied_and_BestEffortDeleteObjects_is_on" , func (t * testing.T ) {
743+ t .Parallel ()
744+
745+ svc , s3Mock := testService (t , & testServiceInput {Bucket : & infrav1.S3Bucket {BestEffortDeleteObjects : aws .Bool (true )}})
746+ s3Mock .EXPECT ().HeadObject (gomock .Any ()).Return (nil , nil )
747+ s3Mock .EXPECT ().DeleteObject (gomock .Any ()).Return (nil , awserr .New ("AccessDenied" , "Access Denied" , nil ))
748+
749+ if err := svc .Delete (machineScope ); err != nil {
750+ t .Fatalf ("Unexpected error, got: %v" , err )
751+ }
752+ })
741753 })
742754
743755 t .Run ("returns_error_when" , func (t * testing.T ) {
@@ -793,6 +805,27 @@ func TestDeleteObject(t *testing.T) {
793805 t .Fatalf ("Expected error" )
794806 }
795807 })
808+
809+ t .Run ("object_access_denied_and_BestEffortDeleteObjects_is_off" , func (t * testing.T ) {
810+ t .Parallel ()
811+
812+ svc , s3Mock := testService (t , & testServiceInput {Bucket : & infrav1.S3Bucket {}})
813+ s3Mock .EXPECT ().HeadObject (gomock .Any ()).Return (nil , nil )
814+ s3Mock .EXPECT ().DeleteObject (gomock .Any ()).Return (nil , awserr .New ("AccessDenied" , "Access Denied" , nil ))
815+
816+ machineScope := & scope.MachineScope {
817+ Machine : & clusterv1.Machine {},
818+ AWSMachine : & infrav1.AWSMachine {
819+ ObjectMeta : metav1.ObjectMeta {
820+ Name : nodeName ,
821+ },
822+ },
823+ }
824+
825+ if err := svc .Delete (machineScope ); err == nil {
826+ t .Fatalf ("Expected error" )
827+ }
828+ })
796829 })
797830
798831 t .Run ("is_idempotent" , func (t * testing.T ) {
0 commit comments