128 lines
2.9 KiB
Go
128 lines
2.9 KiB
Go
|
package common
|
||
|
|
||
|
import "testing"
|
||
|
|
||
|
func TestShouldDumpPublicValues(t *testing.T) {
|
||
|
type S struct {
|
||
|
MyString string
|
||
|
myString string
|
||
|
}
|
||
|
|
||
|
data := &S{
|
||
|
MyString: "value1",
|
||
|
}
|
||
|
|
||
|
dumps := make([]string, 0, 2)
|
||
|
DumpConfig(data, func(s string) { dumps = append(dumps, s) })
|
||
|
|
||
|
if len(dumps) != 1 {
|
||
|
t.Fatalf("Expected len(dumps) to be 1, but got %d", len(dumps))
|
||
|
|
||
|
}
|
||
|
if dumps[0] != "MyString=value1" {
|
||
|
t.Errorf("Expected dumps[0] to be 'MyString=value1', but got %s", dumps[0])
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestShouldOnlyDumpStrings(t *testing.T) {
|
||
|
type S struct {
|
||
|
MyString string
|
||
|
MyInt int
|
||
|
MyFloat32 float32
|
||
|
MyStringPointer *string
|
||
|
}
|
||
|
|
||
|
s := "value1"
|
||
|
data := &S{
|
||
|
MyString: s,
|
||
|
MyInt: 1,
|
||
|
MyFloat32: 2.0,
|
||
|
MyStringPointer: &s,
|
||
|
}
|
||
|
|
||
|
dumps := make([]string, 0, 4)
|
||
|
DumpConfig(data, func(s string) { dumps = append(dumps, s) })
|
||
|
|
||
|
if len(dumps) != 1 {
|
||
|
t.Fatalf("Expected len(dumps) to be 1, but got %d", len(dumps))
|
||
|
|
||
|
}
|
||
|
if dumps[0] != "MyString=value1" {
|
||
|
t.Errorf("Expected dumps[0] to be 'MyString=value1', but got %s", dumps[0])
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDumpShouldMaskSensitiveFieldValues(t *testing.T) {
|
||
|
type S struct {
|
||
|
MyString string
|
||
|
MySecret string
|
||
|
MySecretValue string
|
||
|
MyPassword string
|
||
|
MyPasswordValue string
|
||
|
}
|
||
|
|
||
|
data := &S{
|
||
|
MyString: "my-string",
|
||
|
MySecret: "s3cr3t",
|
||
|
MySecretValue: "s3cr3t-value",
|
||
|
MyPassword: "p@ssw0rd",
|
||
|
MyPasswordValue: "p@ssw0rd-value",
|
||
|
}
|
||
|
|
||
|
dumps := make([]string, 0, 5)
|
||
|
DumpConfig(data, func(s string) { dumps = append(dumps, s) })
|
||
|
|
||
|
if len(dumps) != 5 {
|
||
|
t.Fatalf("Expected len(dumps) to be 5, but got %d", len(dumps))
|
||
|
|
||
|
}
|
||
|
if dumps[0] != "MyString=my-string" {
|
||
|
t.Errorf("Expected dumps[0] to be 'MyString=my-string', but got %s", dumps[0])
|
||
|
}
|
||
|
if dumps[1] != "MySecret=******" {
|
||
|
t.Errorf("Expected dumps[1] to be 'MySecret=******', but got %s", dumps[1])
|
||
|
}
|
||
|
if dumps[2] != "MySecretValue=************" {
|
||
|
t.Errorf("Expected dumps[2] to be 'MySecret=************', but got %s", dumps[2])
|
||
|
}
|
||
|
if dumps[3] != "MyPassword=********" {
|
||
|
t.Errorf("Expected dumps[3] to be 'MyPassword=******** but got %s", dumps[3])
|
||
|
}
|
||
|
if dumps[4] != "MyPasswordValue=**************" {
|
||
|
t.Errorf("Expected dumps[4] to be 'MyPasswordValue=**************' but got %s", dumps[4])
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestDumpConfigShouldDumpTopLevelValuesOnly(t *testing.T) {
|
||
|
type N struct {
|
||
|
NestedString string
|
||
|
}
|
||
|
|
||
|
type S struct {
|
||
|
Nested1 N
|
||
|
MyString string
|
||
|
Nested2 N
|
||
|
}
|
||
|
|
||
|
data := &S{
|
||
|
Nested1: N{
|
||
|
NestedString: "nested-string1",
|
||
|
},
|
||
|
MyString: "my-string",
|
||
|
Nested2: N{
|
||
|
NestedString: "nested-string2",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
dumps := make([]string, 0, 1)
|
||
|
DumpConfig(data, func(s string) { dumps = append(dumps, s) })
|
||
|
|
||
|
if len(dumps) != 1 {
|
||
|
t.Fatalf("Expected len(dumps) to be 1, but got %d", len(dumps))
|
||
|
|
||
|
}
|
||
|
if dumps[0] != "MyString=my-string" {
|
||
|
t.Errorf("Expected dumps[0] to be 'MyString=my-string', but got %s", dumps[0])
|
||
|
}
|
||
|
}
|