2 * ============LICENSE_START=======================================================
3 * oom-certservice-k8s-external-provider
4 * ================================================================================
5 * Copyright (C) 2020 Nokia. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package cmpv2provisioner
28 "github.com/stretchr/testify/assert"
29 v1 "k8s.io/api/core/v1"
31 "onap.org/oom-certservice/k8s-external-provider/src/cmpv2api"
32 "onap.org/oom-certservice/k8s-external-provider/src/testdata"
36 secretName = "issuer-cert-secret"
37 url = "https://oom-cert-service:8443/v1/certificate/"
38 healthEndpoint = "actuator/health"
39 certEndpoint = "v1/certificate"
41 keySecretKey = "cmpv2Issuer-key.pem"
42 certSecretKey = "cmpv2Issuer-cert.pem"
43 cacertSecretKey = "cacert.pem"
46 func Test_shouldCreateProvisioner(t *testing.T) {
47 issuer, secret := getValidIssuerAndSecret()
49 provisioner, _ := CreateProvisioner(&issuer, secret)
51 assert.NotNil(t, provisioner)
52 assert.Equal(t, url, provisioner.url)
53 assert.Equal(t, caName, provisioner.caName)
54 assert.Equal(t, healthEndpoint, provisioner.healthEndpoint)
55 assert.Equal(t, certEndpoint, provisioner.certEndpoint)
58 func Test_shouldReturnError_whenSecretMissingKeyRef(t *testing.T) {
59 issuer, secret := getValidIssuerAndSecret()
60 delete(secret.Data, keySecretKey)
62 provisioner, err := CreateProvisioner(&issuer, secret)
64 assert.Nil(t, provisioner)
65 if assert.Error(t, err) {
66 assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, keySecretKey), err)
70 func Test_shouldReturnError_whenSecretMissingCertRef(t *testing.T) {
71 issuer, secret := getValidIssuerAndSecret()
72 delete(secret.Data, certSecretKey)
74 provisioner, err := CreateProvisioner(&issuer, secret)
76 assert.Nil(t, provisioner)
77 if assert.Error(t, err) {
78 assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, certSecretKey), err)
82 func Test_shouldReturnError_whenSecretMissingCacertRef(t *testing.T) {
83 issuer, secret := getValidIssuerAndSecret()
84 delete(secret.Data, cacertSecretKey)
86 provisioner, err := CreateProvisioner(&issuer, secret)
88 assert.Nil(t, provisioner)
89 if assert.Error(t, err) {
90 assert.Equal(t, fmt.Errorf("secret %s does not contain key %s", secretName, cacertSecretKey), err)
94 func Test_shouldReturnError_whenCreationOfCertServiceClientReturnsError(t *testing.T) {
95 issuer, secret := getValidIssuerAndSecret()
96 invalidKeySecretValue, _ := base64.StdEncoding.DecodeString("")
97 secret.Data[keySecretKey] = invalidKeySecretValue
99 provisioner, err := CreateProvisioner(&issuer, secret)
101 assert.Nil(t, provisioner)
105 func getValidIssuerAndSecret() (cmpv2api.CMPv2Issuer, v1.Secret) {
106 issuer := cmpv2api.CMPv2Issuer{
107 Spec: cmpv2api.CMPv2IssuerSpec{
109 HealthEndpoint: healthEndpoint,
110 CertEndpoint: certEndpoint,
112 CertSecretRef: cmpv2api.SecretKeySelector{
114 KeyRef: keySecretKey,
115 CertRef: certSecretKey,
116 CacertRef: cacertSecretKey,
122 Data: map[string][]byte{
123 keySecretKey: testdata.KeyBytes,
124 certSecretKey: testdata.CertBytes,
125 cacertSecretKey: testdata.CacertBytes,
128 secret.Name = secretName
129 return issuer, secret