From fffb133003b00c5bec1354d89d398e3ac453ba76 Mon Sep 17 00:00:00 2001 From: "Grot (@grafanabot)" <43478413+grafanabot@users.noreply.github.com> Date: Wed, 10 May 2023 11:49:25 +0100 Subject: [PATCH] [v10.0.x] Settings: Do not hide sensitive values if it's empty (#68197) Settings: Do not hide sensitive values if it's empty (#68088) * Settings: Do not hide sensitive values if it's empty * Fix implementation * Add tests for RedactedValue function (cherry picked from commit 0b6ae0d1197303a7afc8397937ec9c5d6243f187) Co-authored-by: Alexander Zobnin --- pkg/setting/setting.go | 4 ++++ pkg/setting/setting_test.go | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 3f0e65a1711..4544b72d97e 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -563,6 +563,10 @@ func ToAbsUrl(relativeUrl string) string { } func RedactedValue(key, value string) string { + if value == "" { + return "" + } + uppercased := strings.ToUpper(key) // Sensitive information: password, secrets etc for _, pattern := range []string{ diff --git a/pkg/setting/setting_test.go b/pkg/setting/setting_test.go index 2bc539cbeb4..81521e55a86 100644 --- a/pkg/setting/setting_test.go +++ b/pkg/setting/setting_test.go @@ -767,3 +767,37 @@ func TestAlertingEnabled(t *testing.T) { }) } } + +func TestRedactedValue(t *testing.T) { + testCases := []struct { + desc string + key string + value string + expected string + }{ + { + desc: "non-sensitive key", + key: "admin_user", + value: "admin", + expected: "admin", + }, + { + desc: "sensitive key with non-empty value", + key: "private_key_path", + value: "/path/to/key", + expected: RedactedPassword, + }, + { + desc: "sensitive key with empty value", + key: "private_key_path", + value: "", + expected: "", + }, + } + + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + require.Equal(t, tc.expected, RedactedValue(tc.key, tc.value)) + }) + } +}