Skip to content

Commit 7c0075a

Browse files
fix lint error
1 parent 35e6953 commit 7c0075a

24 files changed

+218
-1899
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
Copyright 2019 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
// Package mock_stsiface provides a mock implementation for the STSAPI interface.
18+
// Run go generate to regenerate this mock.
19+
//
20+
//go:generate ../../../../../hack/tools/bin/mockgen -destination stsapi_mock.go -package mock_stsiface sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/s3 STSAPI
21+
//go:generate /usr/bin/env bash -c "cat ../../../../../hack/boilerplate/boilerplate.generatego.txt stsapi_mock.go > _stsapi_mock.go && mv _stsapi_mock.go stsapi_mock.go"
22+
package mock_stsiface //nolint:stylecheck

pkg/cloud/services/secretsmanager/mock_secretsmanageriface/doc.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ limitations under the License.
1717
// Package mock_secretsmanageriface provides a mock interface for the SecretsManager API client.
1818
// Run go generate to regenerate this mock.
1919
//
20-
//go:generate ../../../../../hack/tools/bin/mockgen -destination secretsmanagerapi_mock.go -package mock_secretsmanageriface github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface SecretsManagerAPI
20+
//go:generate ../../../../../hack/tools/bin/mockgen -destination secretsmanagerapi_mock.go -package mock_secretsmanageriface sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/secretsmanager SecretsManagerAPI
2121
//go:generate /usr/bin/env bash -c "cat ../../../../../hack/boilerplate/boilerplate.generatego.txt secretsmanagerapi_mock.go > _secretsmanagerapi_mock.go && mv _secretsmanagerapi_mock.go secretsmanagerapi_mock.go"
2222
package mock_secretsmanageriface //nolint:stylecheck

pkg/cloud/services/secretsmanager/mock_secretsmanageriface/secretsmanagerapi_mock.go

Lines changed: 12 additions & 1222 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cloud/services/secretsmanager/secret_test.go

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,22 @@ limitations under the License.
1717
package secretsmanager
1818

1919
import (
20+
"context"
2021
"crypto/rand"
2122
"sort"
2223
"testing"
2324

24-
"github.com/aws/aws-sdk-go/aws"
25-
"github.com/aws/aws-sdk-go/service/secretsmanager"
25+
"github.com/aws/aws-sdk-go-v2/aws"
26+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
2627
"github.com/golang/mock/gomock"
2728
. "github.com/onsi/gomega"
2829
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2930
"k8s.io/apimachinery/pkg/runtime"
3031
"sigs.k8s.io/controller-runtime/pkg/client"
3132
"sigs.k8s.io/controller-runtime/pkg/client/fake"
3233

34+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager/types"
3335
infrav1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
34-
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/awserrors"
3536
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/scope"
3637
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/secretsmanager/mock_secretsmanageriface"
3738
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -48,13 +49,13 @@ func TestServiceCreate(t *testing.T) {
4849
return token
4950
}
5051

51-
sortTagsByKey := func(tags []*secretsmanager.Tag) {
52+
sortTagsByKey := func(tags []types.Tag) {
5253
sort.Slice(tags, func(i, j int) bool {
5354
return *(tags[i].Key) < *(tags[j].Key)
5455
})
5556
}
5657

57-
expectedTags := []*secretsmanager.Tag{
58+
expectedTags := []types.Tag{
5859
{
5960
Key: aws.String("Name"),
6061
Value: aws.String("infra-cluster"),
@@ -97,7 +98,7 @@ func TestServiceCreate(t *testing.T) {
9798
expectedPrefix: "/awsprefix",
9899
wantErr: false,
99100
expect: func(g *WithT, m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
100-
m.CreateSecret(gomock.Any()).Times(0)
101+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Times(0)
101102
},
102103
},
103104
{
@@ -107,8 +108,8 @@ func TestServiceCreate(t *testing.T) {
107108
expectedPrefix: "prefix",
108109
wantErr: false,
109110
expect: func(g *WithT, m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
110-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).MinTimes(1).Return(&secretsmanager.CreateSecretOutput{}, nil).Do(
111-
func(createSecretInput *secretsmanager.CreateSecretInput) {
111+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).MinTimes(1).Return(&secretsmanager.CreateSecretOutput{}, nil).Do(
112+
func(ctx context.Context, createSecretInput *secretsmanager.CreateSecretInput, optFns ...func(*secretsmanager.Options)) {
112113
g.Expect(*(createSecretInput.Name)).To(HavePrefix("prefix-"))
113114
sortTagsByKey(createSecretInput.Tags)
114115
g.Expect(createSecretInput.Tags).To(Equal(expectedTags))
@@ -123,8 +124,8 @@ func TestServiceCreate(t *testing.T) {
123124
expectedPrefix: "/prefix",
124125
wantErr: true,
125126
expect: func(g *WithT, m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
126-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &secretsmanager.InternalServiceError{}).Do(
127-
func(createSecretInput *secretsmanager.CreateSecretInput) {
127+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &types.InternalServiceError{}).Do(
128+
func(ctx context.Context, createSecretInput *secretsmanager.CreateSecretInput, optFns ...func(*secretsmanager.Options)) {
128129
g.Expect(*(createSecretInput.Name)).To(HavePrefix("/prefix-"))
129130
sortTagsByKey(createSecretInput.Tags)
130131
g.Expect(createSecretInput.Tags).To(Equal(expectedTags))
@@ -139,9 +140,9 @@ func TestServiceCreate(t *testing.T) {
139140
expectedPrefix: "aws.cluster.x-k8s.io",
140141
wantErr: false,
141142
expect: func(g *WithT, m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
142-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &secretsmanager.InvalidRequestException{})
143-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &secretsmanager.ResourceNotFoundException{})
144-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(&secretsmanager.CreateSecretOutput{}, nil)
143+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &types.InvalidRequestException{})
144+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &types.ResourceNotFoundException{})
145+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(&secretsmanager.CreateSecretOutput{}, nil)
145146
},
146147
},
147148
{
@@ -151,9 +152,9 @@ func TestServiceCreate(t *testing.T) {
151152
expectedPrefix: "aws.cluster.x-k8s.io",
152153
wantErr: false,
153154
expect: func(g *WithT, m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
154-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &secretsmanager.ResourceExistsException{})
155-
m.DeleteSecret(gomock.AssignableToTypeOf(&secretsmanager.DeleteSecretInput{})).Return(&secretsmanager.DeleteSecretOutput{}, nil)
156-
m.CreateSecret(gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(&secretsmanager.CreateSecretOutput{}, nil)
155+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(nil, &types.ResourceExistsException{})
156+
m.DeleteSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.DeleteSecretInput{})).Return(&secretsmanager.DeleteSecretOutput{}, nil)
157+
m.CreateSecret(gomock.Any(), gomock.AssignableToTypeOf(&secretsmanager.CreateSecretInput{})).Return(&secretsmanager.CreateSecretOutput{}, nil)
157158
},
158159
},
159160
}
@@ -202,7 +203,7 @@ func TestServiceDelete(t *testing.T) {
202203
name: "Should not return error when delete is successful",
203204
secretCount: 1,
204205
expect: func(m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
205-
m.DeleteSecret(gomock.Eq(&secretsmanager.DeleteSecretInput{
206+
m.DeleteSecret(gomock.Any(), gomock.Eq(&secretsmanager.DeleteSecretInput{
206207
SecretId: aws.String("prefix-0"),
207208
ForceDeleteWithoutRecovery: aws.Bool(true),
208209
})).Return(&secretsmanager.DeleteSecretOutput{}, nil)
@@ -215,22 +216,22 @@ func TestServiceDelete(t *testing.T) {
215216
name: "Should return all errors except not found errors",
216217
secretCount: 3,
217218
expect: func(m *mock_secretsmanageriface.MockSecretsManagerAPIMockRecorder) {
218-
m.DeleteSecret(gomock.Eq(&secretsmanager.DeleteSecretInput{
219+
m.DeleteSecret(gomock.Any(), gomock.Eq(&secretsmanager.DeleteSecretInput{
219220
SecretId: aws.String("prefix-0"),
220221
ForceDeleteWithoutRecovery: aws.Bool(true),
221-
})).Return(nil, awserrors.NewFailedDependency("failed dependency"))
222-
m.DeleteSecret(gomock.Eq(&secretsmanager.DeleteSecretInput{
222+
})).Return(nil, &types.InternalServiceError{})
223+
m.DeleteSecret(gomock.Any(), gomock.Eq(&secretsmanager.DeleteSecretInput{
223224
SecretId: aws.String("prefix-1"),
224225
ForceDeleteWithoutRecovery: aws.Bool(true),
225-
})).Return(nil, awserrors.NewNotFound("not found"))
226-
m.DeleteSecret(gomock.Eq(&secretsmanager.DeleteSecretInput{
226+
})).Return(nil, &types.ResourceNotFoundException{})
227+
m.DeleteSecret(gomock.Any(), gomock.Eq(&secretsmanager.DeleteSecretInput{
227228
SecretId: aws.String("prefix-2"),
228229
ForceDeleteWithoutRecovery: aws.Bool(true),
229-
})).Return(nil, awserrors.NewConflict("new conflict"))
230+
})).Return(nil, &types.InvalidRequestException{})
230231
},
231232
check: func(g *WithT, err error) {
232233
g.Expect(err).ToNot(BeNil())
233-
g.Expect((err.Error())).To(Equal("[failed dependency, new conflict]"))
234+
g.Expect((err.Error())).To(Equal("[InternalServiceError: , InvalidRequestException: ]"))
234235
},
235236
},
236237
}

pkg/cloud/services/secretsmanager/service.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ limitations under the License.
1818
package secretsmanager
1919

2020
import (
21+
"context"
22+
2123
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
2224

2325
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud"
@@ -29,9 +31,17 @@ import (
2931
// One alternative is to have a large list of functions from the ec2 client.
3032
type Service struct {
3133
scope cloud.ClusterScoper
32-
SecretsManagerClient *secretsmanager.Client
34+
SecretsManagerClient SecretsManagerAPI
35+
}
36+
37+
// SecretsManagerAPI is the subset of the AWS Secrets Manager API that is used by CAPA.
38+
type SecretsManagerAPI interface {
39+
CreateSecret(ctx context.Context, params *secretsmanager.CreateSecretInput, optFns ...func(*secretsmanager.Options)) (*secretsmanager.CreateSecretOutput, error)
40+
DeleteSecret(ctx context.Context, params *secretsmanager.DeleteSecretInput, optFns ...func(*secretsmanager.Options)) (*secretsmanager.DeleteSecretOutput, error)
3341
}
3442

43+
var _ SecretsManagerAPI = &secretsmanager.Client{}
44+
3545
// NewService returns a new service given the api clients.
3646
func NewService(secretsScope cloud.ClusterScoper) *Service {
3747
return &Service{

pkg/cloud/services/ssm/mock_ssmiface/ssmiface_mock.go

Lines changed: 0 additions & 112 deletions
This file was deleted.

0 commit comments

Comments
 (0)