Skip to content

Commit 13ce553

Browse files
committed
ESO-50: Refactor unit test helper code
1 parent e5b5e4d commit 13ce553

File tree

9 files changed

+134
-111
lines changed

9 files changed

+134
-111
lines changed

pkg/controller/commontest/utils.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package commontest
2+
3+
import (
4+
"fmt"
5+
6+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
7+
8+
operatorv1alpha1 "github.com/openshift/external-secrets-operator/api/v1alpha1"
9+
)
10+
11+
const (
12+
// TestExternalSecretsResourceName is the name for ExternalSecrets test CR.
13+
TestExternalSecretsResourceName = "cluster"
14+
15+
// TestExternalSecretsImageName is the sample image name for external-secrets operand.
16+
TestExternalSecretsImageName = "registry.redhat.io/external-secrets-operator/external-secrets-operator-rhel9"
17+
18+
// TestExternalSecretsNamespace is the sample namespace name for external-secrets deployment.
19+
TestExternalSecretsNamespace = "test-external-secrets"
20+
21+
// TestCRDName can be used for sample CRD resources.
22+
TestCRDName = "test-crd"
23+
)
24+
25+
var (
26+
// TestClientError is the error to return for client failure scenarios.
27+
TestClientError = fmt.Errorf("test client error")
28+
)
29+
30+
// TestExternalSecrets returns a sample ExternalSecrets object.
31+
func TestExternalSecrets() *operatorv1alpha1.ExternalSecrets {
32+
return &operatorv1alpha1.ExternalSecrets{
33+
ObjectMeta: metav1.ObjectMeta{
34+
Name: TestExternalSecretsResourceName,
35+
},
36+
}
37+
}
38+
39+
// TestExternalSecretsManager returns a sample ExternalSecretsManager object.
40+
func TestExternalSecretsManager() *operatorv1alpha1.ExternalSecretsManager {
41+
return &operatorv1alpha1.ExternalSecretsManager{
42+
ObjectMeta: metav1.ObjectMeta{
43+
Name: TestExternalSecretsResourceName,
44+
},
45+
}
46+
}

pkg/controller/external_secrets/certificate_test.go

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"github.com/openshift/external-secrets-operator/api/v1alpha1"
1818
"github.com/openshift/external-secrets-operator/pkg/controller/client/fakes"
19+
"github.com/openshift/external-secrets-operator/pkg/controller/commontest"
1920
)
2021

2122
var (
@@ -86,22 +87,22 @@ func TestCreateOrApplyCertificates(t *testing.T) {
8687
es.Spec.ExternalSecretsConfig.WebhookConfig.CertManagerConfig.IssuerRef.Name = ""
8788
},
8889
recon: false,
89-
wantErr: fmt.Sprintf("failed to update certificate resource for %s/%s deployment: issuerRef.Name not present", testNamespace, testExternalSecretsForCertificate().GetName()),
90+
wantErr: fmt.Sprintf("failed to update certificate resource for %s/%s deployment: issuerRef.Name not present", commontest.TestExternalSecretsNamespace, testExternalSecretsForCertificate().GetName()),
9091
},
9192
{
9293
name: "reconciliation of webhook certificate fails while checking if exists",
9394
preReq: func(r *Reconciler, m *fakes.FakeCtrlClient) {
9495
m.ExistsCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) (bool, error) {
9596
if ns.Name == serviceExternalSecretWebhookName {
96-
return false, testError
97+
return false, commontest.TestClientError
9798
}
9899
if ns.Name == "test-issuer" {
99100
return true, nil
100101
}
101102
return false, nil
102103
})
103104
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
104-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
105+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
105106
if u, ok := obj.(*unstructured.Unstructured); ok {
106107
issuer := testIssuer()
107108
unstructuredIssuer, err := runtime.DefaultUnstructuredConverter.ToUnstructured(issuer)
@@ -124,7 +125,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
124125
es.Spec.ExternalSecretsConfig.WebhookConfig.CertManagerConfig.IssuerRef.Name = "test-issuer"
125126
},
126127
recon: false,
127-
wantErr: fmt.Sprintf("failed to check %s/%s certificate resource already exists: %s", testNamespace, testValidateCertificateResourceName, testError),
128+
wantErr: fmt.Sprintf("failed to check %s/%s certificate resource already exists: %s", commontest.TestExternalSecretsNamespace, testValidateCertificateResourceName, commontest.TestClientError),
128129
},
129130
{
130131
name: "reconciliation of webhook certificate fails while restoring to expected state",
@@ -133,7 +134,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
133134
switch o := obj.(type) {
134135
case *certmanagerv1.Certificate:
135136
if ns.Name == serviceExternalSecretWebhookName {
136-
cert := testCertificate()
137+
cert := testCertificate(webhookCertificateAssetName)
137138
cert.SetLabels(map[string]string{"different": "labels"})
138139
cert.DeepCopyInto(o)
139140
return nil
@@ -167,7 +168,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
167168
})
168169
m.UpdateWithRetryCalls(func(ctx context.Context, obj client.Object, opts ...client.UpdateOption) error {
169170
if obj.GetName() == serviceExternalSecretWebhookName {
170-
return testError
171+
return commontest.TestClientError
171172
}
172173
return nil
173174
})
@@ -177,7 +178,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
177178
es.Spec.ExternalSecretsConfig.WebhookConfig.CertManagerConfig.IssuerRef.Name = "test-issuer"
178179
},
179180
recon: false,
180-
wantErr: fmt.Sprintf("failed to update %s/%s certificate resource: %s", testNamespace, testValidateCertificateResourceName, testError),
181+
wantErr: fmt.Sprintf("failed to update %s/%s certificate resource: %s", commontest.TestExternalSecretsNamespace, testValidateCertificateResourceName, commontest.TestClientError),
181182
},
182183
{
183184
name: "reconciliation of webhook certificate which already exists in expected state",
@@ -247,12 +248,12 @@ func TestCreateOrApplyCertificates(t *testing.T) {
247248
})
248249
m.CreateCalls(func(ctx context.Context, obj client.Object, opts ...client.CreateOption) error {
249250
if obj.GetName() == serviceExternalSecretWebhookName {
250-
return testError
251+
return commontest.TestClientError
251252
}
252253
return nil
253254
})
254255
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
255-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
256+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
256257
testIssuer().DeepCopyInto(obj.(*certmanagerv1.Issuer))
257258
return nil
258259
}
@@ -264,7 +265,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
264265
es.Spec.ExternalSecretsConfig.WebhookConfig.CertManagerConfig.IssuerRef.Name = "test-issuer"
265266
},
266267
recon: false,
267-
wantErr: fmt.Sprintf("failed to create %s/%s certificate resource: %s", testNamespace, testValidateCertificateResourceName, testError),
268+
wantErr: fmt.Sprintf("failed to create %s/%s certificate resource: %s", commontest.TestExternalSecretsNamespace, testValidateCertificateResourceName, commontest.TestClientError),
268269
},
269270
{
270271
name: "successful webhook certificate creation",
@@ -286,7 +287,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
286287
return nil
287288
})
288289
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
289-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
290+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
290291
testIssuer().DeepCopyInto(obj.(*certmanagerv1.Issuer))
291292
return nil
292293
}
@@ -318,12 +319,12 @@ func TestCreateOrApplyCertificates(t *testing.T) {
318319
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
319320
switch o := obj.(type) {
320321
case *corev1.Secret:
321-
if ns.Name == "bitwarden-secret" && ns.Namespace == testNamespace {
322+
if ns.Name == "bitwarden-secret" && ns.Namespace == commontest.TestExternalSecretsNamespace {
322323
testSecretForCertificate().DeepCopyInto(o)
323324
return nil
324325
}
325326
case *certmanagerv1.Issuer:
326-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
327+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
327328
testIssuer().DeepCopyInto(o)
328329
return nil
329330
}
@@ -371,11 +372,11 @@ func TestCreateOrApplyCertificates(t *testing.T) {
371372
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
372373
switch o := obj.(type) {
373374
case *corev1.Secret:
374-
if ns.Name == "bitwarden-secret" && ns.Namespace == testNamespace {
375-
return testError
375+
if ns.Name == "bitwarden-secret" && ns.Namespace == commontest.TestExternalSecretsNamespace {
376+
return commontest.TestClientError
376377
}
377378
case *certmanagerv1.Issuer:
378-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
379+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
379380
testIssuer().DeepCopyInto(o)
380381
return nil
381382
}
@@ -398,7 +399,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
398399
}
399400
},
400401
recon: false,
401-
wantErr: fmt.Sprintf("failed to fetch %q secret: %s", types.NamespacedName{Name: "bitwarden-secret", Namespace: testNamespace}, testError),
402+
wantErr: fmt.Sprintf("failed to fetch %q secret: %s", types.NamespacedName{Name: "bitwarden-secret", Namespace: commontest.TestExternalSecretsNamespace}, commontest.TestClientError),
402403
},
403404
{
404405
name: "bitwarden disabled (explicitly nil): only webhook certificate reconciled",
@@ -427,7 +428,7 @@ func TestCreateOrApplyCertificates(t *testing.T) {
427428
return nil
428429
})
429430
m.GetCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) error {
430-
if ns.Name == "test-issuer" && ns.Namespace == testNamespace {
431+
if ns.Name == "test-issuer" && ns.Namespace == commontest.TestExternalSecretsNamespace {
431432
testIssuer().DeepCopyInto(obj.(*certmanagerv1.Issuer))
432433
return nil
433434
}
@@ -466,11 +467,11 @@ func TestCreateOrApplyCertificates(t *testing.T) {
466467
}
467468

468469
func testExternalSecretsForCertificate() *v1alpha1.ExternalSecrets {
469-
externalSecrets := testExternalSecrets()
470+
externalSecrets := commontest.TestExternalSecrets()
470471

471472
externalSecrets.Spec = v1alpha1.ExternalSecretsSpec{
472473
ControllerConfig: &v1alpha1.ControllerConfig{
473-
Namespace: testNamespace,
474+
Namespace: commontest.TestExternalSecretsNamespace,
474475
},
475476
ExternalSecretsConfig: &v1alpha1.ExternalSecretsConfig{
476477
WebhookConfig: &v1alpha1.WebhookConfig{
@@ -489,7 +490,7 @@ func testIssuer() *certmanagerv1.Issuer {
489490
return &certmanagerv1.Issuer{
490491
ObjectMeta: metav1.ObjectMeta{
491492
Name: "test-issuer",
492-
Namespace: testNamespace,
493+
Namespace: commontest.TestExternalSecretsNamespace,
493494
},
494495
Spec: certmanagerv1.IssuerSpec{
495496
IssuerConfig: certmanagerv1.IssuerConfig{
@@ -517,7 +518,7 @@ func testSecretForCertificate() *corev1.Secret {
517518
return &corev1.Secret{
518519
ObjectMeta: metav1.ObjectMeta{
519520
Name: "bitwarden-secret",
520-
Namespace: testNamespace,
521+
Namespace: commontest.TestExternalSecretsNamespace,
521522
},
522523
Data: map[string][]byte{
523524
"username": []byte("testuser"),

pkg/controller/external_secrets/deployments_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"github.com/openshift/external-secrets-operator/api/v1alpha1"
1515
"github.com/openshift/external-secrets-operator/pkg/controller/client/fakes"
16+
"github.com/openshift/external-secrets-operator/pkg/controller/commontest"
1617
)
1718

1819
func TestCreateOrApplyDeployments(t *testing.T) {
@@ -36,7 +37,7 @@ func TestCreateOrApplyDeployments(t *testing.T) {
3637
})
3738
},
3839
updateExternalSecrets: func(i *v1alpha1.ExternalSecrets) {
39-
i.Status.ExternalSecretsImage = testImageName
40+
i.Status.ExternalSecretsImage = commontest.TestExternalSecretsImageName
4041
},
4142
},
4243
{
@@ -60,7 +61,7 @@ func TestCreateOrApplyDeployments(t *testing.T) {
6061
m.ExistsCalls(func(ctx context.Context, ns types.NamespacedName, obj client.Object) (bool, error) {
6162
switch obj.(type) {
6263
case *appsv1.Deployment:
63-
return false, testError
64+
return false, commontest.TestClientError
6465
}
6566
return true, nil
6667
})
@@ -82,7 +83,7 @@ func TestCreateOrApplyDeployments(t *testing.T) {
8283
m.UpdateWithRetryCalls(func(ctx context.Context, obj client.Object, _ ...client.UpdateOption) error {
8384
switch obj.(type) {
8485
case *appsv1.Deployment:
85-
return testError
86+
return commontest.TestClientError
8687
}
8788
return nil
8889
})
@@ -199,7 +200,7 @@ func TestCreateOrApplyDeployments(t *testing.T) {
199200
m.StatusUpdateCalls(func(ctx context.Context, obj client.Object, _ ...client.SubResourceUpdateOption) error {
200201
switch obj.(type) {
201202
case *v1alpha1.ExternalSecrets:
202-
return testError
203+
return commontest.TestClientError
203204
}
204205
return nil
205206
})
@@ -361,21 +362,21 @@ func TestCreateOrApplyDeployments(t *testing.T) {
361362
tt.preReq(r, mock)
362363
}
363364
r.CtrlClient = mock
364-
externalsecrets := testExternalSecrets()
365+
externalsecrets := commontest.TestExternalSecrets()
365366
//externalsecrets.SetNamespace(testExternalSecretsNamespace)
366367
if tt.updateExternalSecrets != nil {
367368
tt.updateExternalSecrets(externalsecrets)
368369
}
369370
if !tt.skipEnvVar {
370-
t.Setenv("RELATED_IMAGE_EXTERNAL_SECRETS", testImageName)
371+
t.Setenv("RELATED_IMAGE_EXTERNAL_SECRETS", commontest.TestExternalSecretsImageName)
371372
}
372373
err := r.createOrApplyDeployments(externalsecrets, controllerDefaultResourceLabels, false)
373374
if (tt.wantErr != "" || err != nil) && (err == nil || err.Error() != tt.wantErr) {
374375
t.Errorf("createOrApplyDeployments() err: %v, wantErr: %v", err, tt.wantErr)
375376
}
376377
if tt.wantErr == "" {
377378
if tt.wantErr == "" {
378-
if externalsecrets.Status.ExternalSecretsImage != testImageName {
379+
if externalsecrets.Status.ExternalSecretsImage != commontest.TestExternalSecretsImageName {
379380
t.Errorf("createOrApplyDeployments() got image in status: %v, want: %v", externalsecrets.Status.ExternalSecretsImage, "test-image")
380381
}
381382
}

0 commit comments

Comments
 (0)