[OOM-K8S-CERT-EXTERNAL-PROVIDER] Provide certs to CMPv2 Issuer
[oom/platform/cert-service.git] / certServiceK8sExternalProvider / src / cmpv2controller / cmpv2_issuer_controller_test.go
index 8409ea7..79c78ed 100644 (file)
 package cmpv2controller
 
 import (
+       "testing"
+
        "github.com/go-logr/logr"
        "github.com/stretchr/testify/assert"
        "github.com/stretchr/testify/mock"
+
        "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api"
-       "testing"
 )
 
+func Test_shouldBeValidCMPv2IssuerSpec_whenAllFieldsAreSet(t *testing.T) {
+       spec := getValidCMPv2IssuerSpec()
+
+       err := validateCMPv2IssuerSpec(spec, &MockLogger{})
+       assert.Nil(t, err)
+}
+
 func Test_shouldBeInvalidCMPv2IssuerSpec_whenSpecIsEmpty(t *testing.T) {
        spec := cmpv2api.CMPv2IssuerSpec{}
        err := validateCMPv2IssuerSpec(spec, nil)
@@ -35,32 +44,50 @@ func Test_shouldBeInvalidCMPv2IssuerSpec_whenSpecIsEmpty(t *testing.T) {
 }
 
 func Test_shouldBeInvalidCMPv2IssuerSpec_whenNotAllFieldsAreSet(t *testing.T) {
-       spec := cmpv2api.CMPv2IssuerSpec{}
-       spec.URL = "https://localhost"
-       spec.KeyRef = cmpv2api.SecretKeySelector{}
-       spec.KeyRef.Name = "secret-key"
+       setEmptyFieldFunctions := map[string]func(spec *cmpv2api.CMPv2IssuerSpec){
+               "emptyUrl":            func(spec *cmpv2api.CMPv2IssuerSpec) { spec.URL = "" },
+               "empryCaName":         func(spec *cmpv2api.CMPv2IssuerSpec) { spec.CaName = "" },
+               "emptySecretName":     func(spec *cmpv2api.CMPv2IssuerSpec) { spec.CertSecretRef.Name = "" },
+               "emptySecretKeyRef":   func(spec *cmpv2api.CMPv2IssuerSpec) { spec.CertSecretRef.KeyRef = "" },
+               "emptySecretCertRef":  func(spec *cmpv2api.CMPv2IssuerSpec) { spec.CertSecretRef.CertRef = "" },
+               "emptySecretCaertRef": func(spec *cmpv2api.CMPv2IssuerSpec) { spec.CertSecretRef.CacertRef = "" },
+       }
 
-       err := validateCMPv2IssuerSpec(spec, &MockLogger{})
-       assert.NotNil(t, err)
+       for caseName, setEmptyFieldFunction := range setEmptyFieldFunctions {
+               t.Run(caseName, func(t *testing.T) {
+                       test_shouldBeInvalidCMPv2IssuerSpec_whenFunctionApplied(t, setEmptyFieldFunction)
+               })
+       }
 }
 
-func Test_shouldBeValidCMPv2IssuerSpec_whenAllFieldsAreSet(t *testing.T) {
-       spec := cmpv2api.CMPv2IssuerSpec{}
-       spec.URL = "https://localhost"
-       spec.KeyRef = cmpv2api.SecretKeySelector{}
-       spec.KeyRef.Name = "secret-key"
-       spec.KeyRef.Key = "the-key"
+func test_shouldBeInvalidCMPv2IssuerSpec_whenFunctionApplied(t *testing.T, transformSpec func(spec *cmpv2api.CMPv2IssuerSpec)) {
+       spec := getValidCMPv2IssuerSpec()
+       transformSpec(&spec)
+       err := validateCMPv2IssuerSpec(spec, nil)
+       assert.NotNil(t, err)
+}
 
-       err := validateCMPv2IssuerSpec(spec, &MockLogger{})
-       assert.Nil(t, err)
+func getValidCMPv2IssuerSpec() cmpv2api.CMPv2IssuerSpec {
+       issuerSpec := cmpv2api.CMPv2IssuerSpec{
+               URL:    "https://oom-cert-service:8443/v1/certificate/",
+               CaName: "RA",
+               CertSecretRef: cmpv2api.SecretKeySelector{
+                       Name:      "issuer-cert-secret",
+                       KeyRef:    "cmpv2Issuer-key.pem",
+                       CertRef:   "cmpv2Issuer-cert.pem",
+                       CacertRef: "cacert.pem",
+               },
+       }
+       return issuerSpec
 }
 
 type MockLogger struct {
        mock.Mock
 }
-func (m *MockLogger) Info(msg string, keysAndValues ...interface{}) {}
+
+func (m *MockLogger) Info(msg string, keysAndValues ...interface{})             {}
 func (m *MockLogger) Error(err error, msg string, keysAndValues ...interface{}) {}
-func (m *MockLogger) Enabled() bool { return false }
-func (m *MockLogger) V(level int) logr.Logger { return m }
-func (m *MockLogger) WithValues(keysAndValues ...interface{}) logr.Logger { return m }
-func (m *MockLogger) WithName(name string) logr.Logger { return m }
+func (m *MockLogger) Enabled() bool                                             { return false }
+func (m *MockLogger) V(level int) logr.Logger                                   { return m }
+func (m *MockLogger) WithValues(keysAndValues ...interface{}) logr.Logger       { return m }
+func (m *MockLogger) WithName(name string) logr.Logger                          { return m }