|
6 | 6 | package k8scontext
|
7 | 7 |
|
8 | 8 | import (
|
9 |
| - "github.com/onsi/ginkgo" |
| 9 | + "github.com/onsi/ginkgo/v2" |
10 | 10 | . "github.com/onsi/gomega"
|
11 | 11 | v1 "k8s.io/api/core/v1"
|
| 12 | + "k8s.io/client-go/kubernetes" |
| 13 | + testclient "k8s.io/client-go/kubernetes/fake" |
12 | 14 |
|
13 | 15 | "github.com/Azure/application-gateway-kubernetes-ingress/pkg/controllererrors"
|
14 | 16 | "github.com/Azure/application-gateway-kubernetes-ingress/pkg/tests"
|
15 | 17 | )
|
16 | 18 |
|
17 | 19 | var _ = ginkgo.Describe("Testing K8sContext.SecretStore", func() {
|
18 |
| - secretsStore := NewSecretStore() |
19 |
| - ginkgo.Context("Test ConvertSecret function", func() { |
20 |
| - secret := v1.Secret{} |
21 |
| - ginkgo.It("Should have returned an error - unrecognized type of secret", func() { |
22 |
| - err := secretsStore.ConvertSecret("someKey", &secret) |
23 |
| - Expect(err.(*controllererrors.Error).Code).To(Equal(controllererrors.ErrorUnknownSecretType)) |
24 |
| - }) |
25 |
| - ginkgo.It("", func() { |
26 |
| - malformed := secret |
27 |
| - malformed.Type = recognizedSecretType |
28 |
| - err := secretsStore.ConvertSecret("someKey", &malformed) |
29 |
| - Expect(err.(*controllererrors.Error).Code).To(Equal(controllererrors.ErrorMalformedSecret)) |
30 |
| - }) |
31 |
| - ginkgo.It("", func() { |
32 |
| - malformed := secret |
33 |
| - malformed.Type = recognizedSecretType |
34 |
| - malformed.Data = make(map[string][]byte) |
35 |
| - malformed.Data[tlsKey] = []byte("X") |
36 |
| - malformed.Data[tlsCrt] = []byte("Y") |
37 |
| - err := secretsStore.ConvertSecret("someKey", &malformed) |
38 |
| - Expect(err.(*controllererrors.Error).Code).To(Equal(controllererrors.ErrorExportingWithOpenSSL)) |
39 |
| - }) |
40 |
| - ginkgo.It("", func() { |
| 20 | + secretsStore := NewSecretStore(nil) |
| 21 | + |
| 22 | + ginkgo.DescribeTable("when converting certificate to PFX", |
| 23 | + func(secret *v1.Secret, expectedError controllererrors.ErrorCode) { |
| 24 | + err := secretsStore.ConvertSecret("someKey", secret) |
| 25 | + Expect(err.(*controllererrors.Error).Code).To(Equal(expectedError)) |
| 26 | + }, |
| 27 | + ginkgo.Entry("no type in secret", &v1.Secret{}, controllererrors.ErrorUnknownSecretType), |
| 28 | + ginkgo.Entry("unrecognized type of secret", &v1.Secret{Type: v1.SecretTypeOpaque}, controllererrors.ErrorUnknownSecretType), |
| 29 | + ginkgo.Entry("malformed data", &v1.Secret{Type: v1.SecretTypeTLS, Data: map[string][]byte{}}, controllererrors.ErrorMalformedSecret), |
| 30 | + ginkgo.Entry("invalid data", &v1.Secret{Type: v1.SecretTypeTLS, Data: map[string][]byte{ |
| 31 | + v1.TLSCertKey: []byte("X"), |
| 32 | + v1.TLSPrivateKeyKey: []byte("X"), |
| 33 | + }}, controllererrors.ErrorExportingWithOpenSSL), |
| 34 | + ) |
| 35 | + |
| 36 | + ginkgo.When("certificate gets stored", func() { |
| 37 | + ginkgo.It("should be retrivable with the secret key", func() { |
41 | 38 | err := secretsStore.ConvertSecret("someKey", tests.NewSecretTestFixture())
|
42 | 39 | Expect(err).ToNot(HaveOccurred())
|
43 | 40 | actual := secretsStore.GetPfxCertificate("someKey")
|
44 | 41 | Expect(len(actual)).To(BeNumerically(">", 0))
|
45 | 42 | })
|
46 | 43 | })
|
| 44 | + |
| 45 | + ginkgo.When("certificate is no cached", func() { |
| 46 | + ginkgo.It("should get it from the api-server", func() { |
| 47 | + secret := tests.NewSecretTestFixture() |
| 48 | + var client kubernetes.Interface = testclient.NewSimpleClientset(secret) |
| 49 | + secretsStore := NewSecretStore(client) |
| 50 | + |
| 51 | + actual := secretsStore.GetPfxCertificate(secret.Namespace + "/" + secret.Name) |
| 52 | + Expect(len(actual)).To(BeNumerically(">", 0)) |
| 53 | + }) |
| 54 | + |
| 55 | + ginkgo.It("should return nil if secret does not exist", func() { |
| 56 | + var client kubernetes.Interface = testclient.NewSimpleClientset() |
| 57 | + secretsStore := NewSecretStore(client) |
| 58 | + |
| 59 | + actual := secretsStore.GetPfxCertificate("someKey") |
| 60 | + Expect(actual).To(BeNil()) |
| 61 | + }) |
| 62 | + }) |
47 | 63 | })
|
0 commit comments