package funcs import ( "testing" "github.com/hashicorp/terraform/internal/lang/marks" "github.com/zclconf/go-cty/cty" ) func TestRedactIfSensitive(t *testing.T) { testCases := map[string]struct { value interface{} marks []cty.ValueMarks want string }{ "sensitive string": { value: "foo", marks: []cty.ValueMarks{cty.NewValueMarks(marks.Sensitive)}, want: "(sensitive value)", }, "marked non-sensitive string": { value: "foo", marks: []cty.ValueMarks{cty.NewValueMarks("boop")}, want: `"foo"`, }, "sensitive string with other marks": { value: "foo", marks: []cty.ValueMarks{cty.NewValueMarks("boop"), cty.NewValueMarks(marks.Sensitive)}, want: "(sensitive value)", }, "sensitive number": { value: 12345, marks: []cty.ValueMarks{cty.NewValueMarks(marks.Sensitive)}, want: "(sensitive value)", }, "non-sensitive number": { value: 12345, marks: []cty.ValueMarks{}, want: "12345", }, } for name, tc := range testCases { t.Run(name, func(t *testing.T) { got := redactIfSensitive(tc.value, tc.marks...) if got != tc.want { t.Errorf("wrong result, got %v, want %v", got, tc.want) } }) } }