From a7a7e91bb5ea9363272697c39eee0b62d21585ec Mon Sep 17 00:00:00 2001 From: Piotr Marcinkiewicz Date: Fri, 30 Oct 2020 11:02:51 +0100 Subject: [OOM-K8S-CERT-EXTERNAL-PROVIDER] Add CMPv2IssuerController test - Add Reconcile test in CMPv2IssuerController Issue-ID: OOM-2559 Signed-off-by: Piotr Marcinkiewicz Change-Id: I49aff7bc36f7da4df7eeaebaca144ee5a5bb9853 --- .../cmpv2provisioner/cmpv2_provisioner_factory.go | 10 ++- .../cmpv2_provisioner_factory_mock.go | 43 +++++++++++ .../cmpv2_provisioner_factory_test.go | 87 +++++++--------------- .../src/cmpv2provisioner/cmpv2_provisioner_test.go | 9 +-- 4 files changed, 81 insertions(+), 68 deletions(-) create mode 100644 certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_mock.go (limited to 'certServiceK8sExternalProvider/src/cmpv2provisioner') diff --git a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory.go b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory.go index 27f5c108..00abd2ea 100644 --- a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory.go +++ b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory.go @@ -29,7 +29,15 @@ import ( "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api" ) -func CreateProvisioner(issuer *cmpv2api.CMPv2Issuer, secret v1.Secret) (*CertServiceCA, error) { + +type ProvisionerFactory interface { + CreateProvisioner(issuer *cmpv2api.CMPv2Issuer, secret v1.Secret) (*CertServiceCA, error) +} + +type ProvisionerFactoryImpl struct { +} + +func (f *ProvisionerFactoryImpl) CreateProvisioner(issuer *cmpv2api.CMPv2Issuer, secret v1.Secret) (*CertServiceCA, error) { secretKeys := issuer.Spec.CertSecretRef keyBase64, err := readValueFromSecret(secret, secretKeys.KeyRef) if err != nil { diff --git a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_mock.go b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_mock.go new file mode 100644 index 00000000..f2ffa860 --- /dev/null +++ b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_mock.go @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START======================================================= + * oom-certservice-k8s-external-provider + * ================================================================================ + * Copyright (C) 2020 Nokia. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package cmpv2provisioner + +import ( + v1 "k8s.io/api/core/v1" + + "onap.org/oom-certservice/k8s-external-provider/src/certserviceclient" + "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api" + "onap.org/oom-certservice/k8s-external-provider/src/cmpv2provisioner/testdata" +) + +type ProvisionerFactoryMock struct { + CreateProvisionerFunc func(issuer *cmpv2api.CMPv2Issuer, secret v1.Secret) (*CertServiceCA, error) +} + +func (f *ProvisionerFactoryMock) CreateProvisioner(issuer *cmpv2api.CMPv2Issuer, secret v1.Secret) (*CertServiceCA, error) { + provisioner, err := New(issuer, &certserviceclient.CertServiceClientMock{ + GetCertificatesFunc: func(csr []byte, pk []byte) (response *certserviceclient.CertificatesResponse, e error) { + return &testdata.SampleCertServiceResponse, nil + }, + }) + + return provisioner, err +} diff --git a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_test.go b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_test.go index be19bde9..a7e975a4 100644 --- a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_test.go +++ b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_factory_test.go @@ -26,105 +26,70 @@ import ( "testing" "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" - "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api" "onap.org/oom-certservice/k8s-external-provider/src/testdata" ) -const ( - secretName = "issuer-cert-secret" - url = "https://oom-cert-service:8443/v1/certificate/" - healthEndpoint = "actuator/health" - certEndpoint = "v1/certificate" - caName = "RA" - keySecretKey = "cmpv2Issuer-key.pem" - certSecretKey = "cmpv2Issuer-cert.pem" - cacertSecretKey = "cacert.pem" -) - func Test_shouldCreateProvisioner(t *testing.T) { - issuer, secret := getValidIssuerAndSecret() + issuer, secret := testdata.GetValidIssuerWithSecret() + provisionerFactory := ProvisionerFactoryImpl{} - provisioner, _ := CreateProvisioner(&issuer, secret) + provisioner, _ := provisionerFactory.CreateProvisioner(&issuer, secret) assert.NotNil(t, provisioner) - assert.Equal(t, url, provisioner.url) - assert.Equal(t, caName, provisioner.caName) - assert.Equal(t, healthEndpoint, provisioner.healthEndpoint) - assert.Equal(t, certEndpoint, provisioner.certEndpoint) + assert.Equal(t, testdata.Url, provisioner.url) + assert.Equal(t, testdata.CaName, provisioner.caName) + assert.Equal(t, testdata.HealthEndpoint, provisioner.healthEndpoint) + assert.Equal(t, testdata.CertEndpoint, provisioner.certEndpoint) } func Test_shouldReturnError_whenSecretMissingKeyRef(t *testing.T) { - issuer, secret := getValidIssuerAndSecret() - delete(secret.Data, keySecretKey) + issuer, secret := testdata.GetValidIssuerWithSecret() + delete(secret.Data, testdata.KeySecretKey) + provisionerFactory := ProvisionerFactoryImpl{} - provisioner, err := CreateProvisioner(&issuer, secret) + provisioner, err := provisionerFactory.CreateProvisioner(&issuer, secret) assert.Nil(t, provisioner) if assert.Error(t, err) { - assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, keySecretKey), err) + assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", testdata.SecretName, testdata.KeySecretKey), err) } } func Test_shouldReturnError_whenSecretMissingCertRef(t *testing.T) { - issuer, secret := getValidIssuerAndSecret() - delete(secret.Data, certSecretKey) + issuer, secret := testdata.GetValidIssuerWithSecret() + delete(secret.Data, testdata.CertSecretKey) + provisionerFactory := ProvisionerFactoryImpl{} - provisioner, err := CreateProvisioner(&issuer, secret) + provisioner, err := provisionerFactory.CreateProvisioner(&issuer, secret) assert.Nil(t, provisioner) if assert.Error(t, err) { - assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, certSecretKey), err) + assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", testdata.SecretName, testdata.CertSecretKey), err) } } func Test_shouldReturnError_whenSecretMissingCacertRef(t *testing.T) { - issuer, secret := getValidIssuerAndSecret() - delete(secret.Data, cacertSecretKey) + issuer, secret := testdata.GetValidIssuerWithSecret() + delete(secret.Data, testdata.CacertSecretKey) + provisionerFactory := ProvisionerFactoryImpl{} - provisioner, err := CreateProvisioner(&issuer, secret) + provisioner, err := provisionerFactory.CreateProvisioner(&issuer, secret) assert.Nil(t, provisioner) if assert.Error(t, err) { - assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, cacertSecretKey), err) + assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", testdata.SecretName, testdata.CacertSecretKey), err) } } func Test_shouldReturnError_whenCreationOfCertServiceClientReturnsError(t *testing.T) { - issuer, secret := getValidIssuerAndSecret() + issuer, secret := testdata.GetValidIssuerWithSecret() invalidKeySecretValue, _ := base64.StdEncoding.DecodeString("") - secret.Data[keySecretKey] = invalidKeySecretValue + secret.Data[testdata.KeySecretKey] = invalidKeySecretValue + provisionerFactory := ProvisionerFactoryImpl{} - provisioner, err := CreateProvisioner(&issuer, secret) + provisioner, err := provisionerFactory.CreateProvisioner(&issuer, secret) assert.Nil(t, provisioner) assert.Error(t, err) } - -func getValidIssuerAndSecret() (cmpv2api.CMPv2Issuer, v1.Secret) { - issuer := cmpv2api.CMPv2Issuer{ - Spec: cmpv2api.CMPv2IssuerSpec{ - URL: url, - HealthEndpoint: healthEndpoint, - CertEndpoint: certEndpoint, - CaName: caName, - CertSecretRef: cmpv2api.SecretKeySelector{ - Name: secretName, - KeyRef: keySecretKey, - CertRef: certSecretKey, - CacertRef: cacertSecretKey, - }, - }, - } - secret := v1.Secret{ - - Data: map[string][]byte{ - keySecretKey: testdata.KeyBytes, - certSecretKey: testdata.CertBytes, - cacertSecretKey: testdata.CacertBytes, - }, - } - secret.Name = secretName - return issuer, secret -} diff --git a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go index 099233c4..a483c72c 100644 --- a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go +++ b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go @@ -30,12 +30,12 @@ import ( cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1" "github.com/stretchr/testify/assert" + apiv1 "k8s.io/api/core/v1" apimach "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "onap.org/oom-certservice/k8s-external-provider/src/certserviceclient" "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api" - "onap.org/oom-certservice/k8s-external-provider/src/cmpv2provisioner/testdata" ) const ISSUER_NAME = "cmpv2-issuer" @@ -72,11 +72,8 @@ func Test_shouldReturnCorrectSignedPemsWhenParametersAreCorrect(t *testing.T) { const EXPECTED_TRUSTED_FILENAME = "testdata/expected_trusted.pem" issuer := createIssuerAndCerts(ISSUER_NAME, ISSUER_URL) - provisioner, err := New(&issuer, &certServiceClientMock{ - getCertificatesFunc: func(csr []byte, pk []byte) (response *certserviceclient.CertificatesResponse, e error) { - return &testdata.SampleCertServiceResponse, nil - }, - }) + provisionerFactory := ProvisionerFactoryMock{} + provisioner, err := provisionerFactory.CreateProvisioner(&issuer, apiv1.Secret{}) issuerNamespaceName := createIssuerNamespaceName(ISSUER_NAMESPACE, ISSUER_NAME) Store(issuerNamespaceName, provisioner) -- cgit 1.2.3-korg