Expose the MaskTokens function so other test code can use it.
This is just a small helper to make test output more readable. Signed-off-by: Matt Moyer <moyerm@vmware.com>
This commit is contained in:
parent
273ac62ec2
commit
0ccf14801e
@ -7,6 +7,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -26,18 +27,22 @@ func (l *testlogReader) Read(p []byte) (n int, err error) {
|
|||||||
l.t.Helper()
|
l.t.Helper()
|
||||||
n, err = l.r.Read(p)
|
n, err = l.r.Read(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
l.t.Logf("%s > %q: %v", l.name, maskTokens(p[0:n]), err)
|
l.t.Logf("%s > %q: %v", l.name, MaskTokens(string(p[0:n])), err)
|
||||||
} else {
|
} else {
|
||||||
l.t.Logf("%s > %q", l.name, maskTokens(p[0:n]))
|
l.t.Logf("%s > %q", l.name, MaskTokens(string(p[0:n])))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
//nolint: gochecknoglobals
|
// MaskTokens makes a best-effort attempt to mask out things that look like secret tokens in test output.
|
||||||
var tokenLike = regexp.MustCompile(`(?mi)[a-zA-Z0-9._-]{30,}|[a-zA-Z0-9]{20,}`)
|
// The goal is more to have readable test output than for any security reason.
|
||||||
|
func MaskTokens(in string) string {
|
||||||
func maskTokens(in []byte) string {
|
var tokenLike = regexp.MustCompile(`(?mi)[a-zA-Z0-9._-]{30,}|[a-zA-Z0-9]{20,}`)
|
||||||
return tokenLike.ReplaceAllStringFunc(string(in), func(t string) string {
|
return tokenLike.ReplaceAllStringFunc(in, func(t string) string {
|
||||||
|
// This is a silly heuristic, but things with multiple dots are more likely hostnames that we don't want masked.
|
||||||
|
if strings.Count(t, ".") >= 4 {
|
||||||
|
return t
|
||||||
|
}
|
||||||
return fmt.Sprintf("[...%d bytes...]", len(t))
|
return fmt.Sprintf("[...%d bytes...]", len(t))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user