aboutsummaryrefslogtreecommitdiffstats
path: root/certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go
diff options
context:
space:
mode:
authorPiotr Marcinkiewicz <piotr.marcinkiewicz@nokia.com>2020-10-30 11:02:51 +0100
committerPiotr Marcinkiewicz <piotr.marcinkiewicz@nokia.com>2020-11-04 08:54:32 +0100
commita7a7e91bb5ea9363272697c39eee0b62d21585ec (patch)
tree3e297d8ae81cafb8eb775844cfeb26c3f710a55f /certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go
parent9879e0147fc076114c7226bd6130d25c14770639 (diff)
[OOM-K8S-CERT-EXTERNAL-PROVIDER] Add CMPv2IssuerController test
- Add Reconcile test in CMPv2IssuerController Issue-ID: OOM-2559 Signed-off-by: Piotr Marcinkiewicz <piotr.marcinkiewicz@nokia.com> Change-Id: I49aff7bc36f7da4df7eeaebaca144ee5a5bb9853
Diffstat (limited to 'certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go')
-rw-r--r--certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go79
1 files changed, 67 insertions, 12 deletions
diff --git a/certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go b/certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go
index 79c78ed5..88aaf5ec 100644
--- a/certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go
+++ b/certServiceK8sExternalProvider/src/cmpv2controller/cmpv2_issuer_controller_test.go
@@ -24,14 +24,47 @@ import (
"testing"
"github.com/go-logr/logr"
+ certmanager "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
+ apiv1 "k8s.io/api/core/v1"
+ "k8s.io/apimachinery/pkg/runtime"
+ "k8s.io/apimachinery/pkg/types"
+ clientgoscheme "k8s.io/client-go/kubernetes/scheme"
+ "k8s.io/client-go/tools/record"
+ "k8s.io/utils/clock"
+ ctrl "sigs.k8s.io/controller-runtime"
+ "sigs.k8s.io/controller-runtime/pkg/client"
+ "sigs.k8s.io/controller-runtime/pkg/client/fake"
+ "sigs.k8s.io/controller-runtime/pkg/reconcile"
"onap.org/oom-certservice/k8s-external-provider/src/cmpv2api"
+ certserviceapi "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api"
+ provisioners "onap.org/oom-certservice/k8s-external-provider/src/cmpv2provisioner"
+ "onap.org/oom-certservice/k8s-external-provider/src/testdata"
)
+func Test_shouldPrepareAndVerifyCMPv2Issuer_whenRequestReceived(t *testing.T) {
+ scheme := initScheme()
+ issuer, secret := testdata.GetValidIssuerWithSecret()
+ fakeClient := getFakeClient(scheme, issuer, secret)
+ fakeRequest := getFakeRequest()
+ fakeRecorder := record.NewFakeRecorder(3)
+ controller := getController(fakeRecorder, fakeClient)
+
+ res, err := controller.Reconcile(fakeRequest)
+
+ expectedProvisioner, _ := controller.ProvisionerFactory.CreateProvisioner(&issuer, secret)
+ actualProvisioner, _ := provisioners.Load(types.NamespacedName{Name: testdata.IssuerObjectName, Namespace: testdata.Namespace})
+ assert.Nil(t, err)
+ assert.NotNil(t, res)
+ assert.Equal(t, <-fakeRecorder.Events, "Normal Verified CMPv2Issuer verified and ready to sign certificates")
+ assert.NotNil(t, actualProvisioner)
+ assert.ObjectsAreEqual(expectedProvisioner, actualProvisioner)
+}
+
func Test_shouldBeValidCMPv2IssuerSpec_whenAllFieldsAreSet(t *testing.T) {
- spec := getValidCMPv2IssuerSpec()
+ spec := testdata.GetValidCMPv2IssuerSpec()
err := validateCMPv2IssuerSpec(spec, &MockLogger{})
assert.Nil(t, err)
@@ -61,24 +94,46 @@ func Test_shouldBeInvalidCMPv2IssuerSpec_whenNotAllFieldsAreSet(t *testing.T) {
}
func test_shouldBeInvalidCMPv2IssuerSpec_whenFunctionApplied(t *testing.T, transformSpec func(spec *cmpv2api.CMPv2IssuerSpec)) {
- spec := getValidCMPv2IssuerSpec()
+ spec := testdata.GetValidCMPv2IssuerSpec()
transformSpec(&spec)
err := validateCMPv2IssuerSpec(spec, nil)
assert.NotNil(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",
+func getController(fakeRecorder *record.FakeRecorder, mockClient client.Client) CMPv2IssuerController {
+ controller := CMPv2IssuerController{
+ Log: ctrl.Log.WithName("controllers").WithName("CertificateRequest"),
+ Clock: clock.RealClock{},
+ Recorder: fakeRecorder,
+ Client: mockClient,
+ ProvisionerFactory: &provisioners.ProvisionerFactoryMock{},
+ }
+ return controller
+}
+
+func getFakeRequest() reconcile.Request {
+ fakeRequest := reconcile.Request{
+ NamespacedName: types.NamespacedName{
+ Namespace: testdata.Namespace,
+ Name: testdata.IssuerObjectName,
},
}
- return issuerSpec
+ return fakeRequest
+}
+
+func getFakeClient(scheme *runtime.Scheme, issuer cmpv2api.CMPv2Issuer, secret apiv1.Secret) client.Client {
+ fakeClient := func() client.Client {
+ return fake.NewFakeClientWithScheme(scheme, &issuer, &secret)
+ }()
+ return fakeClient
+}
+
+func initScheme() *runtime.Scheme {
+ scheme := runtime.NewScheme()
+ _ = clientgoscheme.AddToScheme(scheme)
+ _ = certmanager.AddToScheme(scheme)
+ _ = certserviceapi.AddToScheme(scheme)
+ return scheme
}
type MockLogger struct {