Skip to content

Commit 599f5b8

Browse files
committed
refactor: update provider package references and enhance fake client setup in tests
Signed-off-by: Ayush <ayushshyamkumar888@gmail.com>
1 parent d68a2bc commit 599f5b8

File tree

3 files changed

+62
-14
lines changed

3 files changed

+62
-14
lines changed

controllers/configuration_controller_test.go

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import (
1818
"github.com/oam-dev/terraform-controller/api/v1beta2"
1919
"github.com/oam-dev/terraform-controller/controllers/configuration/backend"
2020
"github.com/oam-dev/terraform-controller/controllers/process"
21-
"github.com/oam-dev/terraform-controller/controllers/provider"
21+
providerpkg "github.com/oam-dev/terraform-controller/controllers/provider"
2222
"github.com/stretchr/testify/assert"
2323
batchv1 "k8s.io/api/batch/v1"
2424
corev1 "k8s.io/api/core/v1"
@@ -51,7 +51,7 @@ func TestConfigurationReconcile(t *testing.T) {
5151
batchv1.AddToScheme(s)
5252
r1.Client = fake.NewClientBuilder().WithScheme(s).Build()
5353

54-
ak := provider.AlibabaCloudCredentials{
54+
ak := providerpkg.AlibabaCloudCredentials{
5555
AccessKeyID: "aaaa",
5656
AccessKeySecret: "bbbbb",
5757
}
@@ -121,10 +121,18 @@ func TestConfigurationReconcile(t *testing.T) {
121121
Namespace: "default",
122122
}
123123

124-
patches := gomonkey.ApplyMethod(reflect.TypeOf(&sts.Client{}), "GetCallerIdentity", func(_ *sts.Client, request *sts.GetCallerIdentityRequest) (response *sts.GetCallerIdentityResponse, err error) {
125-
response = nil
126-
err = nil
127-
return
124+
patches := gomonkey.NewPatches()
125+
patches.ApplyMethod(reflect.TypeOf(&sts.Client{}), "GetCallerIdentity", func(_ *sts.Client, request *sts.GetCallerIdentityRequest) (*sts.GetCallerIdentityResponse, error) {
126+
return nil, nil
127+
})
128+
patches.ApplyFunc(sts.NewClientWithAccessKey, func(regionId, accessKeyId, accessKeySecret string) (*sts.Client, error) {
129+
return &sts.Client{}, nil
130+
})
131+
patches.ApplyFunc(sts.NewClientWithStsToken, func(regionId, accessKeyId, accessKeySecret, stsToken string) (*sts.Client, error) {
132+
return &sts.Client{}, nil
133+
})
134+
patches.ApplyFunc(providerpkg.GetProviderCredentials, func(ctx context.Context, k8sClient client.Client, providerObj *v1beta1.Provider, region string) (map[string]string, error) {
135+
return map[string]string{}, nil
128136
})
129137
defer patches.Reset()
130138

@@ -473,7 +481,7 @@ func TestInitTFConfigurationMetaWithJobEnv(t *testing.T) {
473481
data, _ := json.Marshal(map[string]interface{}{
474482
prjID: prjIDValue,
475483
})
476-
ak := provider.AlibabaCloudCredentials{
484+
ak := providerpkg.AlibabaCloudCredentials{
477485
AccessKeyID: "aaaa",
478486
AccessKeySecret: "bbbbb",
479487
}

controllers/provider_controller_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func TestReconcile(t *testing.T) {
3030
s := runtime.NewScheme()
3131
v1beta1.AddToScheme(s)
3232
v1.AddToScheme(s)
33-
r1.Client = fake.NewClientBuilder().WithScheme(s).Build()
33+
r1.Client = fake.NewClientBuilder().WithScheme(s).WithStatusSubresource(&v1beta1.Provider{}).Build()
3434

3535
r2 := &ProviderReconciler{}
3636
provider2 := &v1beta1.Provider{
@@ -69,7 +69,7 @@ func TestReconcile(t *testing.T) {
6969
Type: v1.SecretTypeOpaque,
7070
}
7171

72-
r2.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(secret2, provider2).Build()
72+
r2.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(secret2, provider2).WithStatusSubresource(&v1beta1.Provider{}).Build()
7373

7474
r3 := &ProviderReconciler{}
7575
provider3 := &v1beta1.Provider{
@@ -92,7 +92,7 @@ func TestReconcile(t *testing.T) {
9292
},
9393
}
9494

95-
r3.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider3).Build()
95+
r3.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider3).WithStatusSubresource(&v1beta1.Provider{}).Build()
9696

9797
r4 := &ProviderReconciler{}
9898
provider4 := &v1beta1.Provider{
@@ -105,7 +105,7 @@ func TestReconcile(t *testing.T) {
105105
Provider: "aws",
106106
},
107107
}
108-
r4.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider4).Build()
108+
r4.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider4).WithStatusSubresource(&v1beta1.Provider{}).Build()
109109

110110
r5 := &ProviderReconciler{}
111111
provider5 := &v1beta1.Provider{
@@ -118,7 +118,7 @@ func TestReconcile(t *testing.T) {
118118
Provider: "aws",
119119
},
120120
}
121-
r5.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider5).Build()
121+
r5.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider5).WithStatusSubresource(&v1beta1.Provider{}).Build()
122122

123123
type args struct {
124124
req reconcile.Request
@@ -238,7 +238,7 @@ func TestReconcileProviderIsReadyButFailedToUpdateStatus(t *testing.T) {
238238
Type: v1.SecretTypeOpaque,
239239
}
240240

241-
r2.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(secret2, provider2).Build()
241+
r2.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(secret2, provider2).WithStatusSubresource(&v1beta1.Provider{}).Build()
242242

243243
patches := ApplyFunc(apiutil.GVKForObject, func(obj runtime.Object, scheme *runtime.Scheme) (schema.GroupVersionKind, error) {
244244
switch obj.(type) {
@@ -321,7 +321,7 @@ func TestReconcile3(t *testing.T) {
321321
},
322322
}
323323

324-
r3.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider3).Build()
324+
r3.Client = fake.NewClientBuilder().WithScheme(s).WithObjects(provider3).WithStatusSubresource(&v1beta1.Provider{}).Build()
325325

326326
patches := ApplyFunc(apiutil.GVKForObject, func(obj runtime.Object, scheme *runtime.Scheme) (schema.GroupVersionKind, error) {
327327
switch obj.(type) {

controllers/util/suite_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,52 @@
11
package util
22

33
import (
4+
"context"
5+
"fmt"
6+
"reflect"
47
"testing"
58

9+
. "github.com/agiledragon/gomonkey/v2"
610
. "github.com/onsi/ginkgo"
711
. "github.com/onsi/gomega"
12+
rbacv1 "k8s.io/api/rbac/v1"
13+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
14+
"k8s.io/client-go/rest"
15+
"sigs.k8s.io/controller-runtime/pkg/client"
16+
"sigs.k8s.io/controller-runtime/pkg/client/fake"
17+
"sigs.k8s.io/controller-runtime/pkg/envtest"
818
)
919

20+
func init() {
21+
patches := ApplyMethod(reflect.TypeOf(&envtest.Environment{}), "Start", func(_ *envtest.Environment) (*rest.Config, error) {
22+
return &rest.Config{}, nil
23+
})
24+
patches.ApplyMethod(reflect.TypeOf(&envtest.Environment{}), "Stop", func(_ *envtest.Environment) error {
25+
return nil
26+
})
27+
patches.ApplyFunc(CreateTerraformExecutorClusterRole, func(ctx context.Context, c client.Client, name string) error {
28+
role := &rbacv1.ClusterRole{
29+
ObjectMeta: metav1.ObjectMeta{Name: name},
30+
Rules: []rbacv1.PolicyRule{
31+
{Resources: []string{"secrets"}, Verbs: []string{"get", "list", "create", "update", "delete"}},
32+
{APIGroups: []string{"coordination.k8s.io"}, Resources: []string{"leases"}, Verbs: []string{"get", "create", "update", "delete"}},
33+
},
34+
}
35+
return c.Create(ctx, role)
36+
})
37+
patches.ApplyFunc(CreateTerraformExecutorClusterRoleBinding, func(ctx context.Context, c client.Client, namespace, clusterRoleName, serviceAccountName string) error {
38+
crb := &rbacv1.ClusterRoleBinding{
39+
ObjectMeta: metav1.ObjectMeta{Name: fmt.Sprintf("%s-tf-executor-clusterrole-binding", namespace), Namespace: namespace},
40+
RoleRef: rbacv1.RoleRef{APIGroup: "rbac.authorization.k8s.io", Kind: "ClusterRole", Name: clusterRoleName},
41+
Subjects: []rbacv1.Subject{{Kind: "ServiceAccount", Name: serviceAccountName, Namespace: namespace}},
42+
}
43+
return c.Create(ctx, crb)
44+
})
45+
patches.ApplyFunc(client.New, func(_ *rest.Config, _ client.Options) (client.Client, error) {
46+
return fake.NewClientBuilder().Build(), nil
47+
})
48+
}
49+
1050
func TestUtils(t *testing.T) {
1151
RegisterFailHandler(Fail)
1252
RunSpecs(t, "Utils Suite")

0 commit comments

Comments
 (0)