Fix uppercase from_secrets (#842)

Secret names where matched based on their lowercase value already just the conversion to lowercase for `from_secrets` was missing.
This commit is contained in:
Anbraten
2022-03-19 12:34:32 +01:00
committed by GitHub
parent d49e2fdf17
commit 6ae7e2cc4f
2 changed files with 28 additions and 26 deletions

View File

@@ -69,7 +69,7 @@ func sanitizeParamValue(v interface{}, secrets map[string]Secret) (string, error
if fromSecret, ok := v.(map[string]interface{}); ok { if fromSecret, ok := v.(map[string]interface{}); ok {
if secretNameI, ok := fromSecret["from_secret"]; ok { if secretNameI, ok := fromSecret["from_secret"]; ok {
if secretName, ok := secretNameI.(string); ok { if secretName, ok := secretNameI.(string); ok {
if secret, ok := secrets[secretName]; ok { if secret, ok := secrets[strings.ToLower(secretName)]; ok {
return secret.Value, nil return secret.Value, nil
} }
return "", fmt.Errorf("no secret found for %q", secretName) return "", fmt.Errorf("no secret found for %q", secretName)

View File

@@ -9,33 +9,35 @@ import (
func TestParamsToEnv(t *testing.T) { func TestParamsToEnv(t *testing.T) {
from := map[string]interface{}{ from := map[string]interface{}{
"skip": nil, "skip": nil,
"string": "stringz", "string": "stringz",
"int": 1, "int": 1,
"float": 1.2, "float": 1.2,
"bool": true, "bool": true,
"slice": []int{1, 2, 3}, "slice": []int{1, 2, 3},
"map": map[string]string{"hello": "world"}, "map": map[string]string{"hello": "world"},
"complex": []struct{ Name string }{{"Jack"}, {"Jill"}}, "complex": []struct{ Name string }{{"Jack"}, {"Jill"}},
"complex2": struct{ Name string }{"Jack"}, "complex2": struct{ Name string }{"Jack"},
"from.address": "noreply@example.com", "from.address": "noreply@example.com",
"tags": stringsToInterface("next", "latest"), "tags": stringsToInterface("next", "latest"),
"tag": stringsToInterface("next"), "tag": stringsToInterface("next"),
"my_secret": map[string]interface{}{"from_secret": "secret_token"}, "my_secret": map[string]interface{}{"from_secret": "secret_token"},
"UPPERCASE_SECRET": map[string]interface{}{"from_secret": "SECRET_TOKEN"},
} }
want := map[string]string{ want := map[string]string{
"PLUGIN_STRING": "stringz", "PLUGIN_STRING": "stringz",
"PLUGIN_INT": "1", "PLUGIN_INT": "1",
"PLUGIN_FLOAT": "1.2", "PLUGIN_FLOAT": "1.2",
"PLUGIN_BOOL": "true", "PLUGIN_BOOL": "true",
"PLUGIN_SLICE": "1,2,3", "PLUGIN_SLICE": "1,2,3",
"PLUGIN_MAP": `{"hello":"world"}`, "PLUGIN_MAP": `{"hello":"world"}`,
"PLUGIN_COMPLEX": `[{"name":"Jack"},{"name":"Jill"}]`, "PLUGIN_COMPLEX": `[{"name":"Jack"},{"name":"Jill"}]`,
"PLUGIN_COMPLEX2": `{"name":"Jack"}`, "PLUGIN_COMPLEX2": `{"name":"Jack"}`,
"PLUGIN_FROM_ADDRESS": "noreply@example.com", "PLUGIN_FROM_ADDRESS": "noreply@example.com",
"PLUGIN_TAG": "next", "PLUGIN_TAG": "next",
"PLUGIN_TAGS": "next,latest", "PLUGIN_TAGS": "next,latest",
"PLUGIN_MY_SECRET": "FooBar", "PLUGIN_MY_SECRET": "FooBar",
"PLUGIN_UPPERCASE_SECRET": "FooBar",
} }
secrets := map[string]Secret{ secrets := map[string]Secret{
"secret_token": {Name: "secret_token", Value: "FooBar", Match: nil}, "secret_token": {Name: "secret_token", Value: "FooBar", Match: nil},