Skip to content

Commit fa1fae2

Browse files
committed
more coverage with delete bucket test
1 parent 4b84943 commit fa1fae2

File tree

1 file changed

+91
-5
lines changed

1 file changed

+91
-5
lines changed

cloud/services/object_storage_buckets_test.go

Lines changed: 91 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@ package services
33
import (
44
"context"
55
"fmt"
6-
v1 "k8s.io/api/core/v1"
7-
"k8s.io/apimachinery/pkg/api/errors"
8-
"k8s.io/apimachinery/pkg/runtime/schema"
9-
"k8s.io/apimachinery/pkg/types"
10-
"sigs.k8s.io/controller-runtime/pkg/client"
116
"testing"
127

138
"github.com/linode/linodego"
149
"github.com/stretchr/testify/assert"
1510
"go.uber.org/mock/gomock"
11+
v1 "k8s.io/api/core/v1"
12+
"k8s.io/apimachinery/pkg/api/errors"
1613
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+
"k8s.io/apimachinery/pkg/runtime/schema"
15+
"k8s.io/apimachinery/pkg/types"
16+
"sigs.k8s.io/controller-runtime/pkg/client"
1717

1818
infrav1alpha2 "github.com/linode/cluster-api-provider-linode/api/v1alpha2"
1919
"github.com/linode/cluster-api-provider-linode/cloud/scope"
@@ -311,3 +311,89 @@ func TestCreateS3ClientWithAccessKey(t *testing.T) {
311311
})
312312
}
313313
}
314+
315+
func TestDeleteBucket(t *testing.T) {
316+
t.Parallel()
317+
318+
tests := []struct {
319+
name string
320+
bScope *scope.ObjectStorageBucketScope
321+
expectedError error
322+
expects func(k8s *mock.MockK8sClient, lc *mock.MockLinodeClient)
323+
}{
324+
{
325+
name: "Error - failed to purge all objects",
326+
bScope: &scope.ObjectStorageBucketScope{
327+
Bucket: &infrav1alpha2.LinodeObjectStorageBucket{
328+
ObjectMeta: metav1.ObjectMeta{
329+
Name: "test-bucket",
330+
},
331+
Spec: infrav1alpha2.LinodeObjectStorageBucketSpec{
332+
Region: "test-region",
333+
AccessKeyRef: &v1.ObjectReference{
334+
Name: "test-bucket",
335+
},
336+
},
337+
},
338+
},
339+
expects: func(k8s *mock.MockK8sClient, lc *mock.MockLinodeClient) {
340+
k8s.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).DoAndReturn(func(ctx context.Context, name types.NamespacedName, obj *v1.Secret, opts ...client.GetOption) error {
341+
secret := v1.Secret{
342+
ObjectMeta: metav1.ObjectMeta{
343+
Name: "test-bucket-obj-key",
344+
},
345+
Data: map[string][]byte{
346+
"access": []byte("test-access-key"),
347+
"secret": []byte("test-secret-key"),
348+
"bucket": []byte("test-bucket"),
349+
},
350+
}
351+
*obj = secret
352+
return nil
353+
})
354+
},
355+
expectedError: fmt.Errorf("failed to purge all objects"),
356+
},
357+
{
358+
name: "Error - failed to create S3 client",
359+
bScope: &scope.ObjectStorageBucketScope{
360+
Bucket: &infrav1alpha2.LinodeObjectStorageBucket{
361+
ObjectMeta: metav1.ObjectMeta{
362+
Name: "test-bucket",
363+
},
364+
Spec: infrav1alpha2.LinodeObjectStorageBucketSpec{
365+
Region: "test-region",
366+
AccessKeyRef: &v1.ObjectReference{
367+
Name: "test",
368+
},
369+
},
370+
},
371+
},
372+
expects: func(k8s *mock.MockK8sClient, lc *mock.MockLinodeClient) {
373+
k8s.EXPECT().Get(gomock.Any(), gomock.Any(), gomock.Any()).Return(errors.NewNotFound(schema.GroupResource{}, ""))
374+
},
375+
expectedError: fmt.Errorf("failed to create S3 client"),
376+
},
377+
}
378+
for _, tt := range tests {
379+
testcase := tt
380+
t.Run(testcase.name, func(t *testing.T) {
381+
t.Parallel()
382+
383+
ctrl := gomock.NewController(t)
384+
defer ctrl.Finish()
385+
386+
mockK8s := mock.NewMockK8sClient(ctrl)
387+
testcase.bScope.Client = mockK8s
388+
mockClient := mock.NewMockLinodeClient(ctrl)
389+
testcase.bScope.LinodeClient = mockClient
390+
391+
testcase.expects(mockK8s, mockClient)
392+
393+
err := DeleteBucket(t.Context(), testcase.bScope)
394+
if testcase.expectedError != nil {
395+
assert.ErrorContains(t, err, testcase.expectedError.Error())
396+
}
397+
})
398+
}
399+
}

0 commit comments

Comments
 (0)