From 15446c2ccfc117a0feb5a5249c2e62714b2cd3d7 Mon Sep 17 00:00:00 2001 From: Piotr Marcinkiewicz Date: Tue, 3 Nov 2020 17:06:13 +0100 Subject: [OOM-K8S-CERT-EXTERNAL-PROVIDER] Add CertificateRequest controller test - Add CertificateRequest controller test with fake K8s API Issue-ID: OOM-2559 Signed-off-by: Piotr Marcinkiewicz Change-Id: I4e32c2d28f5c4ea35dd013119dfc31acb1646582 --- .../src/cmpv2provisioner/cmpv2_provisioner_test.go | 66 ++++------------------ 1 file changed, 11 insertions(+), 55 deletions(-) (limited to 'certServiceK8sExternalProvider/src/cmpv2provisioner') diff --git a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go index a483c72c..cfafe959 100644 --- a/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go +++ b/certServiceK8sExternalProvider/src/cmpv2provisioner/cmpv2_provisioner_test.go @@ -21,10 +21,7 @@ package cmpv2provisioner import ( - "bytes" "context" - "io/ioutil" - "log" "testing" "time" @@ -32,10 +29,10 @@ import ( "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/testdata" ) const ISSUER_NAME = "cmpv2-issuer" @@ -44,7 +41,7 @@ const ISSUER_NAMESPACE = "onap" func Test_shouldCreateCorrectCertServiceCA(t *testing.T) { issuer := createIssuerAndCerts(ISSUER_NAME, ISSUER_URL) - provisioner, err := New(&issuer, &certServiceClientMock{}) + provisioner, err := New(&issuer, &certserviceclient.CertServiceClientMock{}) assert.Nil(t, err) assert.Equal(t, provisioner.name, issuer.Name, "Unexpected provisioner name.") @@ -53,34 +50,31 @@ func Test_shouldCreateCorrectCertServiceCA(t *testing.T) { func Test_shouldSuccessfullyLoadPreviouslyStoredProvisioner(t *testing.T) { issuer := createIssuerAndCerts(ISSUER_NAME, ISSUER_URL) - provisioner, err := New(&issuer, &certServiceClientMock{}) + provisioner, err := New(&issuer, &certserviceclient.CertServiceClientMock{}) assert.Nil(t, err) - issuerNamespaceName := createIssuerNamespaceName(ISSUER_NAMESPACE, ISSUER_NAME) + issuerNamespaceName := testdata.CreateIssuerNamespaceName(ISSUER_NAMESPACE, ISSUER_NAME) Store(issuerNamespaceName, provisioner) provisioner, ok := Load(issuerNamespaceName) - verifyThatConditionIsTrue(ok, "Provisioner could not be loaded.", t) + testdata.VerifyThatConditionIsTrue(ok, "Provisioner could not be loaded.", t) assert.Equal(t, provisioner.name, issuer.Name, "Unexpected provisioner name.") assert.Equal(t, provisioner.url, issuer.Spec.URL, "Unexpected provisioner url.") } func Test_shouldReturnCorrectSignedPemsWhenParametersAreCorrect(t *testing.T) { - const EXPECTED_SIGNED_FILENAME = "testdata/expected_signed.pem" - const EXPECTED_TRUSTED_FILENAME = "testdata/expected_trusted.pem" - issuer := createIssuerAndCerts(ISSUER_NAME, ISSUER_URL) provisionerFactory := ProvisionerFactoryMock{} provisioner, err := provisionerFactory.CreateProvisioner(&issuer, apiv1.Secret{}) - issuerNamespaceName := createIssuerNamespaceName(ISSUER_NAMESPACE, ISSUER_NAME) + issuerNamespaceName := testdata.CreateIssuerNamespaceName(ISSUER_NAMESPACE, ISSUER_NAME) Store(issuerNamespaceName, provisioner) provisioner, ok := Load(issuerNamespaceName) - verifyThatConditionIsTrue(ok, "Provisioner could not be loaded", t) + testdata.VerifyThatConditionIsTrue(ok, "Provisioner could not be loaded", t) ctx := context.Background() request := createCertificateRequest() @@ -90,21 +84,7 @@ func Test_shouldReturnCorrectSignedPemsWhenParametersAreCorrect(t *testing.T) { assert.Nil(t, err) - verifyThatConditionIsTrue(areSlicesEqual(signedPEM, readFile(EXPECTED_SIGNED_FILENAME)), "Signed pem is different than expected.", t) - verifyThatConditionIsTrue(areSlicesEqual(trustedCAs, readFile(EXPECTED_TRUSTED_FILENAME)), "Trusted CAs pem is different than expected.", t) -} - -func verifyThatConditionIsTrue(cond bool, message string, t *testing.T) { - if !cond { - t.Fatal(message) - } -} - -func createIssuerNamespaceName(namespace string, name string) types.NamespacedName { - return types.NamespacedName{ - Namespace: namespace, - Name: name, - } + testdata.VerifyCertsAreEqualToExpected(t, signedPEM, trustedCAs) } func createIssuerAndCerts(name string, url string) cmpv2api.CMPv2Issuer { @@ -114,14 +94,6 @@ func createIssuerAndCerts(name string, url string) cmpv2api.CMPv2Issuer { return issuer } -func readFile(filename string) []byte { - certRequest, err := ioutil.ReadFile(filename) - if err != nil { - log.Fatal(err) - } - return certRequest -} - func createCertificateRequest() *cmapi.CertificateRequest { const CERTIFICATE_DURATION = "1h" const ISSUER_KIND = "CMPv2Issuer" @@ -140,33 +112,17 @@ func createCertificateRequest() *cmapi.CertificateRequest { request.Spec.IssuerRef.Name = ISSUER_NAME request.Spec.IssuerRef.Kind = ISSUER_KIND request.Spec.IssuerRef.Group = ISSUER_GROUP - request.Spec.Request = readFile(SPEC_REQUEST_FILENAME) + request.Spec.Request = testdata.ReadFile(SPEC_REQUEST_FILENAME) request.Spec.IsCA = true cond := new(cmapi.CertificateRequestCondition) cond.Type = CONDITION_TYPE request.Status.Conditions = []cmapi.CertificateRequestCondition{*cond} - request.Status.Certificate = readFile(STATUS_CERTIFICATE_FILENAME) + request.Status.Certificate = testdata.ReadFile(STATUS_CERTIFICATE_FILENAME) return request } func getPrivateKeyBytes() []byte { - return readFile("testdata/test_private_key.pem") -} - -func areSlicesEqual(slice1 []byte, slice2 []byte) bool { - return bytes.Compare(slice1, slice2) == 0 -} - -type certServiceClientMock struct { - getCertificatesFunc func(csr []byte, key []byte) (*certserviceclient.CertificatesResponse, error) -} - -func (client *certServiceClientMock) GetCertificates(csr []byte, key []byte) (*certserviceclient.CertificatesResponse, error) { - return client.getCertificatesFunc(csr, key) -} - -func (client *certServiceClientMock) CheckHealth() error { - return nil + return testdata.ReadFile("testdata/test_private_key.pem") } -- cgit 1.2.3-korg