Skip to content

Commit b47fb6a

Browse files
feat: [MEC-1478] fix tests
1 parent b4d8324 commit b47fb6a

File tree

1 file changed

+209
-1
lines changed

1 file changed

+209
-1
lines changed

controllers/syncedsecret_controller_test.go

Lines changed: 209 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers
22

33
import (
44
"context"
5+
"fmt"
56
"reflect"
67
"time"
78

@@ -217,7 +218,7 @@ var _ = Describe("SyncedSecret Controller", func() {
217218
})
218219
})
219220

220-
Context("For a single SyncedSecret with AWSAccountID", func() {
221+
Context("For a single SyncedSecret (using Data) with AWSAccountID", func() {
221222
// TODO do a test for DataFrom as well
222223
secretKey := types.NamespacedName{
223224
Name: "another-secret-name",
@@ -415,4 +416,211 @@ var _ = Describe("SyncedSecret Controller", func() {
415416
}, timeout, interval).Should(BeTrue())
416417
})
417418
})
419+
420+
Context("For a single SyncedSecret (using DataFrom) with AWSAccountID", func() {
421+
// TODO do a test for DataFrom as well
422+
secretKey := types.NamespacedName{
423+
Name: "secret-name-from-data",
424+
Namespace: TEST_NAMESPACE2,
425+
}
426+
427+
resourceVersion := ""
428+
429+
It("Should Create K8S Secrets for SyncedSecret (using Data) CRD with AWSAccountID", func() {
430+
MockSecretsOutput.SecretsValueOutput = &secretsmanager.GetSecretValueOutput{
431+
SecretString: _s(`{"database_name":"secretDB","database_pass":"cupofcoffee", "database_name1":"secretDB02"}`),
432+
VersionId: _s(`005`),
433+
}
434+
435+
toCreate := &secretsv1.SyncedSecret{
436+
ObjectMeta: metav1.ObjectMeta{
437+
Name: secretKey.Name,
438+
Namespace: secretKey.Namespace,
439+
ResourceVersion: resourceVersion,
440+
},
441+
Spec: secretsv1.SyncedSecretSpec{
442+
SecretMetadata: metav1.ObjectMeta{
443+
Name: secretKey.Name,
444+
Namespace: secretKey.Namespace,
445+
},
446+
AWSAccountID: _s("12345678910"),
447+
IAMRole: _s("test"), // TODO Make this optional in CRD
448+
DataFrom: &secretsv1.DataFrom{
449+
SecretRef: &secretsv1.SecretRef{
450+
Name: _s("random/aws/secret004"),
451+
},
452+
},
453+
// Data: []*secretsv1.SecretField{
454+
// {
455+
// Name: _s("DB_NAME"),
456+
// ValueFrom: &secretsv1.ValueFrom{
457+
// SecretKeyRef: &secretsv1.SecretKeyRef{
458+
// Name: _s("random/aws/secret004"),
459+
// Key: _s("database_name"),
460+
// },
461+
// },
462+
// },
463+
// {
464+
// Name: _s("DB_PASS"),
465+
// ValueFrom: &secretsv1.ValueFrom{
466+
// SecretKeyRef: &secretsv1.SecretKeyRef{
467+
// Name: _s("random/aws/secret004"),
468+
// Key: _s("database_pass"),
469+
// },
470+
// },
471+
// },
472+
// },
473+
},
474+
}
475+
secretExpect := &corev1.Secret{
476+
ObjectMeta: metav1.ObjectMeta{
477+
Name: secretKey.Name,
478+
Namespace: secretKey.Namespace,
479+
},
480+
Type: "Opaque",
481+
Data: map[string][]byte{
482+
"DB_NAME": []byte("secretDB"),
483+
"DB_PASS": []byte("cupofcoffee"),
484+
},
485+
}
486+
err := k8sClient.Create(context.Background(), toCreate)
487+
Expect(err).ToNot(HaveOccurred())
488+
489+
fetchedSecret := &corev1.Secret{}
490+
Eventually(func() bool {
491+
err := k8sClient.Get(context.Background(), secretKey, fetchedSecret)
492+
return k8serrors.IsNotFound(err)
493+
}, timeout, interval).Should(BeFalse())
494+
495+
fmt.Printf("fetchedSecret.Data %v", fetchedSecret.Data)
496+
fmt.Printf("secretExpect.Data %v", fetchedSecret.Data)
497+
498+
// we need to ensure that that secretExpect.Data is a subset of fetchedSecret.Data
499+
// the kubernetes client.go doesn't base64 values this is something that kubectl maybe does
500+
Expect(reflect.DeepEqual(fetchedSecret.Data, secretExpect.Data)).To(BeTrue())
501+
502+
fetchedCfSecret := &secretsv1.SyncedSecret{}
503+
err = k8sClient.Get(context.Background(), secretKey, fetchedCfSecret)
504+
Expect(err).ToNot(HaveOccurred())
505+
resourceVersion = fetchedCfSecret.ResourceVersion
506+
507+
})
508+
509+
// It("Should update k8s secret object if there is change in AwsSecret CRD with AWSAccountID", func() {
510+
// MockSecretsOutput.SecretsValueOutput = &secretsmanager.GetSecretValueOutput{
511+
// SecretString: _s(`{"database_name":"secretDB","database_pass":"cupofcoffee", "database_name1":"secretDB02"}`),
512+
// VersionId: _s(`005`),
513+
// }
514+
// toUpdate := &secretsv1.SyncedSecret{
515+
// ObjectMeta: metav1.ObjectMeta{
516+
// Name: secretKey.Name,
517+
// Namespace: secretKey.Namespace,
518+
// ResourceVersion: resourceVersion,
519+
// },
520+
// Spec: secretsv1.SyncedSecretSpec{
521+
// SecretMetadata: metav1.ObjectMeta{
522+
// Name: secretKey.Name,
523+
// Namespace: secretKey.Namespace,
524+
// },
525+
// IAMRole: _s("test"),
526+
// AWSAccountID: _s("12345678910"),
527+
// Data: []*secretsv1.SecretField{
528+
// {
529+
// Name: _s("DB_NAME"),
530+
// ValueFrom: &secretsv1.ValueFrom{
531+
// SecretKeyRef: &secretsv1.SecretKeyRef{
532+
// Name: _s("random/aws/secret003"),
533+
// Key: _s("database_name1"),
534+
// },
535+
// },
536+
// },
537+
// {
538+
// Name: _s("DB_PASS"),
539+
// ValueFrom: &secretsv1.ValueFrom{
540+
// SecretKeyRef: &secretsv1.SecretKeyRef{
541+
// Name: _s("random/aws/secret003"),
542+
// Key: _s("database_pass"),
543+
// },
544+
// },
545+
// },
546+
// },
547+
// },
548+
// }
549+
550+
// secretExpect := &corev1.Secret{
551+
// ObjectMeta: metav1.ObjectMeta{
552+
// Name: secretKey.Name,
553+
// Namespace: secretKey.Namespace,
554+
// },
555+
// Type: "Opaque",
556+
// Data: map[string][]byte{
557+
// "DB_NAME": []byte("secretDB02"),
558+
// "DB_PASS": []byte("cupofcoffee"),
559+
// },
560+
// }
561+
562+
// Expect(k8sClient.Update(context.Background(), toUpdate)).Should(Succeed())
563+
564+
// fetchedSecret := &corev1.Secret{}
565+
// Eventually(func() bool {
566+
// k8sClient.Get(context.Background(), secretKey, fetchedSecret)
567+
// return reflect.DeepEqual(fetchedSecret.Data, secretExpect.Data)
568+
// }, timeout, interval).Should(BeTrue())
569+
570+
// fetchedCfSecret := &secretsv1.SyncedSecret{}
571+
// err := k8sClient.Get(context.Background(), secretKey, fetchedCfSecret)
572+
// Expect(err).ToNot(HaveOccurred())
573+
// resourceVersion = fetchedCfSecret.ResourceVersion
574+
// })
575+
576+
// It("Should update the k8s secret object if the mapped AWS Secret changes with AWSAccountID", func() {
577+
// MockSecretsOutput.SecretsValueOutput = &secretsmanager.GetSecretValueOutput{
578+
// SecretString: _s(`{"database_pass":"cupoftea", "database_name1":"secretDB02"}`),
579+
// VersionId: _s(`006`),
580+
// }
581+
582+
// MockSecretsOutput.SecretsPageOutput = &secretsmanager.ListSecretsOutput{
583+
// SecretList: []*secretsmanager.SecretListEntry{
584+
// {
585+
// Name: _s("random/aws/secret003"),
586+
// LastChangedDate: _t(time_now.AddDate(0, 0, -2)),
587+
// SecretVersionsToStages: map[string][]*string{
588+
// "002": []*string{
589+
// _s("AWSCURRENT"),
590+
// },
591+
// },
592+
// }, {
593+
// Name: _s("random/aws/secret003"),
594+
// LastChangedDate: _t(time_now.AddDate(0, 0, -1)),
595+
// SecretVersionsToStages: map[string][]*string{
596+
// "005": {
597+
// _s("AWSPREVIOUS"),
598+
// },
599+
// "006": {
600+
// _s("AWSCURRENT"),
601+
// },
602+
// },
603+
// },
604+
// },
605+
// }
606+
607+
// secretExpect := &corev1.Secret{
608+
// ObjectMeta: metav1.ObjectMeta{
609+
// Name: secretKey.Name,
610+
// Namespace: secretKey.Namespace,
611+
// },
612+
// Type: "Opaque",
613+
// Data: map[string][]byte{
614+
// "DB_NAME": []byte("secretDB02"),
615+
// "DB_PASS": []byte("cupoftea"),
616+
// },
617+
// }
618+
619+
// fetchedSecret := &corev1.Secret{}
620+
// Eventually(func() bool {
621+
// k8sClient.Get(context.Background(), secretKey, fetchedSecret)
622+
// return reflect.DeepEqual(fetchedSecret.Data, secretExpect.Data)
623+
// }, timeout, interval).Should(BeTrue())
624+
// })
625+
})
418626
})

0 commit comments

Comments
 (0)