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=========================================================
31 cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1"
32 "github.com/stretchr/testify/assert"
33 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
35 "k8s.io/klog/v2/klogr"
38 var checkedLogMessages = [7]string{"Property 'duration'", "Property 'usages'", "Property 'ipAddresses'",
39 "Property 'isCA'", "Property 'subject.streetAddress'", "Property 'subject.postalCodes'",
40 "Property 'subject.serialNumber'"}
42 func TestMain(m *testing.M) {
44 flag.CommandLine.Set("v", "10")
45 flag.CommandLine.Set("skip_headers", "true")
46 flag.CommandLine.Set("logtostderr", "false")
47 flag.CommandLine.Set("alsologtostderr", "false")
52 func TestLogShouldNotProvideInformationAboutSkippedPropertiesIfNotExistInCSR(t *testing.T) {
55 request := getCertificateRequestWithoutSkippedProperties()
56 tmpWriteBuffer := getLogBuffer()
59 LogCertRequestProperties(logger, request)
61 logsArray := convertBufferToStringArray(tmpWriteBuffer)
63 for _, logMsg := range checkedLogMessages {
64 assert.False(t, logsContainExpectedMessage(logsArray, logMsg), "Logs contain: "+logMsg+", but should not")
68 func TestLogShouldProvideInformationAboutSkippedPropertiesIfExistInCSR(t *testing.T) {
71 request := getCertificateRequestWithSkippedProperties()
72 tmpWriteBuffer := getLogBuffer()
75 LogCertRequestProperties(logger, request)
77 logsArray := convertBufferToStringArray(tmpWriteBuffer)
80 for _, logMsg := range checkedLogMessages {
81 assert.True(t, logsContainExpectedMessage(logsArray, logMsg), "Logs not contain: "+logMsg)
85 func getCertificateRequestWithoutSkippedProperties() *cmapi.CertificateRequest {
86 request := new(cmapi.CertificateRequest)
87 request.Spec.Request = []byte(csrWithoutSkippedProperties)
91 func getCertificateRequestWithSkippedProperties() *cmapi.CertificateRequest {
92 request := new(cmapi.CertificateRequest)
93 request.Spec.Request = []byte(csrWithSkippedProperties)
94 request.Spec.Duration = &metav1.Duration{Duration: time.Hour}
95 request.Spec.IsCA = true
96 request.Spec.Usages = cmapi.DefaultKeyUsages()
100 func getLogBuffer() *bytes.Buffer {
101 tmpWriteBuffer := bytes.NewBuffer(nil)
102 klog.SetOutput(tmpWriteBuffer)
103 return tmpWriteBuffer
106 func closeLogBuffer() {
110 func convertBufferToStringArray(buffer *bytes.Buffer) []string {
111 return strings.Split(buffer.String(), "\n")
114 func logsContainExpectedMessage(array []string, expectedMsg string) bool {
115 for _, logMsg := range array {
116 if strings.Contains(logMsg, expectedMsg) {