[OOM-K8S-CERT-EXTERNAL-PROVIDER] Add CertificateRequest controller test
[oom/platform/cert-service.git] / certServiceK8sExternalProvider / src / cmpv2provisioner / cmpv2_provisioner_test.go
index a483c72..cfafe95 100644 (file)
 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")
 }