import (
"bytes"
- "flag"
+ "io/ioutil"
+ "log"
"os"
"strings"
"testing"
cmapi "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1"
"github.com/stretchr/testify/assert"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- "k8s.io/klog/v2"
- "k8s.io/klog/v2/klogr"
+
+ "onap.org/oom-certservice/k8s-external-provider/src/leveledlogger"
+ x509utils "onap.org/oom-certservice/k8s-external-provider/src/x509"
)
-var checkedLogMessages = [7]string{"Property 'duration'", "Property 'usages'", "Property 'ipAddresses'",
- "Property 'isCA'", "Property 'subject.streetAddress'", "Property 'subject.postalCodes'",
- "Property 'subject.serialNumber'"}
+var unsupportedProperties = []string{
+ "* property 'duration'",
+ "* property 'usages'",
+ "- property 'ipAddresses'",
+ "- property 'isCA'",
+ "- property 'subject.streetAddress'",
+ "- property 'subject.postalCodes'",
+ "- property 'subject.serialNumber'"}
+
+var supportedProperties = []string{
+ "+ property 'common name'",
+ "+ property 'organization'",
+ "+ property 'organization unit'",
+ "+ property 'country'",
+ "+ property 'state'",
+ "+ property 'location'",
+ "+ property 'dns names'"}
+
+const RESULT_LOG = "testdata/test_result.log"
func TestMain(m *testing.M) {
- klog.InitFlags(nil)
- flag.CommandLine.Set("v", "10")
- flag.CommandLine.Set("skip_headers", "true")
- flag.CommandLine.Set("logtostderr", "false")
- flag.CommandLine.Set("alsologtostderr", "false")
- flag.Parse()
+ leveledlogger.SetConfigFileName("testdata/test_logger_config.json")
os.Exit(m.Run())
}
func TestLogShouldNotProvideInformationAboutSkippedPropertiesIfNotExistInCSR(t *testing.T) {
//given
- logger := klogr.New()
+ logger := leveledlogger.GetLoggerWithName("test")
request := getCertificateRequestWithoutSkippedProperties()
- tmpWriteBuffer := getLogBuffer()
+
+ csr, err := x509utils.DecodeCSR(request.Spec.Request)
+ if err != nil {
+ assert.FailNow(t, "Could not parse Certificate Sign Request")
+ }
//when
- LogCertRequestProperties(logger, request)
- closeLogBuffer()
- logsArray := convertBufferToStringArray(tmpWriteBuffer)
+ LogCertRequestProperties(logger, request, csr)
+ logsArray := convertLogFileToStringArray(RESULT_LOG)
+
//then
- for _, logMsg := range checkedLogMessages {
- assert.False(t, logsContainExpectedMessage(logsArray, logMsg), "Logs contain: "+logMsg+", but should not")
+ for _, logMsg := range unsupportedProperties {
+ assert.False(t, logsContainExpectedMessage(logsArray, logMsg), "Logs should not contain: ["+logMsg+"]")
}
+ removeTemporaryFile(RESULT_LOG)
}
func TestLogShouldProvideInformationAboutSkippedPropertiesIfExistInCSR(t *testing.T) {
//given
- logger := klogr.New()
+ logger := leveledlogger.GetLoggerWithName("test")
request := getCertificateRequestWithSkippedProperties()
- tmpWriteBuffer := getLogBuffer()
+
+ csr, err := x509utils.DecodeCSR(request.Spec.Request)
+ if err != nil {
+ assert.FailNow(t, "Could not parse Certificate Sign Request")
+ }
+
+ //when
+ LogCertRequestProperties(logger, request, csr)
+ logsArray := convertLogFileToStringArray(RESULT_LOG)
+
+ //then
+ for _, logMsg := range unsupportedProperties {
+ assert.True(t, logsContainExpectedMessage(logsArray, logMsg), "Logs should contain: ["+logMsg+"]")
+ }
+ removeTemporaryFile(RESULT_LOG)
+}
+
+func TestLogShouldListSupportedProperties(t *testing.T) {
+ //given
+ logger := leveledlogger.GetLoggerWithName("test")
+ request := getCertificateRequestWithoutSkippedProperties()
+
+ csr, err := x509utils.DecodeCSR(request.Spec.Request)
+ if err != nil {
+ assert.FailNow(t, "Could not parse Certificate Sign Request")
+ }
//when
- LogCertRequestProperties(logger, request)
- closeLogBuffer()
- logsArray := convertBufferToStringArray(tmpWriteBuffer)
+ LogCertRequestProperties(logger, request, csr)
+ logsArray := convertLogFileToStringArray(RESULT_LOG)
//then
- for _, logMsg := range checkedLogMessages {
- assert.True(t, logsContainExpectedMessage(logsArray, logMsg), "Logs not contain: "+logMsg)
+ for _, logMsg := range supportedProperties {
+ assert.True(t, logsContainExpectedMessage(logsArray, logMsg), "Logs should contain: ["+logMsg+"]")
}
+ removeTemporaryFile(RESULT_LOG)
}
func getCertificateRequestWithoutSkippedProperties() *cmapi.CertificateRequest {
return request
}
-func getLogBuffer() *bytes.Buffer {
- tmpWriteBuffer := bytes.NewBuffer(nil)
- klog.SetOutput(tmpWriteBuffer)
- return tmpWriteBuffer
+func convertBufferToStringArray(buffer *bytes.Buffer) []string {
+ return strings.Split(buffer.String(), "\n")
}
-func closeLogBuffer() {
- klog.Flush()
+func convertLogFileToStringArray(filename string) []string {
+ buffer := bytes.NewBuffer(make([]byte, 0))
+ buffer.Write(readFile(filename))
+ return convertBufferToStringArray(buffer)
}
-func convertBufferToStringArray(buffer *bytes.Buffer) []string {
- return strings.Split(buffer.String(), "\n")
+func readFile(filename string) []byte {
+ certRequest, err := ioutil.ReadFile(filename)
+ if err != nil {
+ log.Fatal(err)
+ }
+ return certRequest
+}
+
+func removeTemporaryFile(fileName string) {
+ if _, err := os.Stat(fileName); err == nil {
+ e := os.Remove(fileName)
+ if e != nil {
+ log.Fatal(e)
+ }
+ }
}
func logsContainExpectedMessage(array []string, expectedMsg string) bool {