github.com/jenkins-x/jx/v2@v2.1.155/pkg/kube/log_masker_test.go (about)

     1  // +build unit
     2  
     3  package kube_test
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"strings"
     9  	"testing"
    10  
    11  	"github.com/jenkins-x/jx/v2/pkg/kube"
    12  	"github.com/jenkins-x/jx/v2/pkg/testkube"
    13  	"github.com/stretchr/testify/assert"
    14  	"k8s.io/apimachinery/pkg/runtime"
    15  	"k8s.io/client-go/kubernetes/fake"
    16  )
    17  
    18  func TestLogMasker(t *testing.T) {
    19  	k8sObjects := []runtime.Object{
    20  		testkube.CreateFakeGitSecret(),
    21  	}
    22  	ns := "jx"
    23  	client := fake.NewSimpleClientset(k8sObjects...)
    24  
    25  	hideValues := []string{
    26  		"fakeuser",
    27  		"fakepwd",
    28  	}
    29  
    30  	var buffer bytes.Buffer
    31  
    32  	for i, hideValue := range hideValues {
    33  		buffer.WriteString(fmt.Sprintf("%d: hide: %s\n", i+1, hideValue))
    34  	}
    35  	text := buffer.String()
    36  
    37  	logMasker := &kube.LogMasker{}
    38  	err := logMasker.LoadSecrets(client, ns)
    39  	assert.NoError(t, err, "loading secrets in namespace %s", ns)
    40  
    41  	actual := logMasker.MaskLog(text)
    42  
    43  	t.Logf("created masked text: %s\n", actual)
    44  
    45  	for _, hideValue := range hideValues {
    46  		index := strings.Index(actual, hideValue)
    47  		assert.True(t, index < 0, "found text %s at index %d in masked log: %s", hideValue, index, actual)
    48  	}
    49  }
    50  
    51  func TestLogMaskerFromMap(t *testing.T) {
    52  	hideValues := []string{
    53  		"fakeuser",
    54  		"fakepwd",
    55  	}
    56  
    57  	m := map[string]interface{}{
    58  		"cheese": map[string]interface{}{
    59  			"userName": hideValues[0],
    60  			"password": hideValues[1],
    61  		},
    62  	}
    63  
    64  	var buffer bytes.Buffer
    65  	for i, hideValue := range hideValues {
    66  		buffer.WriteString(fmt.Sprintf("%d: hide: %s\n", i+1, hideValue))
    67  	}
    68  	text := buffer.String()
    69  
    70  	logMasker := kube.NewLogMaskerFromMap(m)
    71  	actual := logMasker.MaskLog(text)
    72  
    73  	t.Logf("created masked text: %s\n", actual)
    74  
    75  	for _, hideValue := range hideValues {
    76  		index := strings.Index(actual, hideValue)
    77  		assert.True(t, index < 0, "found text %s at index %d in masked log: %s", hideValue, index, actual)
    78  	}
    79  }