Skip to content

Commit 88d7277

Browse files
committed
add test for file slice flag value
1 parent f1aef87 commit 88d7277

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

internal/flags/flags.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,11 @@ func getSecretFromFile(flags *pflag.FlagSet, secret string) {
466466
}
467467
scanner := bufio.NewScanner(file)
468468
for scanner.Scan() {
469-
values = append(values, scanner.Text())
469+
line := scanner.Text()
470+
if line == "" {
471+
continue
472+
}
473+
values = append(values, line)
470474
}
471475
} else {
472476
values = append(values, value)

internal/flags/flags_test.go

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func TestGetSecretsFromFilesWithString(t *testing.T) {
5050

5151
err := os.Setenv("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD", value)
5252
require.NoError(t, err)
53+
defer os.Unsetenv("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD")
5354

5455
testGetSecretsFromFiles(t, "notification-email-server-password", value)
5556
}
@@ -69,17 +70,40 @@ func TestGetSecretsFromFilesWithFile(t *testing.T) {
6970

7071
err = os.Setenv("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD", file.Name())
7172
require.NoError(t, err)
73+
defer os.Unsetenv("WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD")
7274

7375
testGetSecretsFromFiles(t, "notification-email-server-password", value)
7476
}
7577

76-
func testGetSecretsFromFiles(t *testing.T, flagName string, expected string) {
78+
func TestGetSliceSecretsFromFiles(t *testing.T) {
79+
values := []string{"entry2", "", "entry3"}
80+
81+
// Create the temporary file which will contain a secret.
82+
file, err := ioutil.TempFile(os.TempDir(), "watchtower-")
83+
require.NoError(t, err)
84+
defer os.Remove(file.Name()) // Make sure to remove the temporary file later.
85+
86+
// Write the secret to the temporary file.
87+
for _, value := range values {
88+
_, err = file.WriteString("\n" + value)
89+
require.NoError(t, err)
90+
}
91+
file.Close()
92+
93+
testGetSecretsFromFiles(t, "notification-url", `[entry1,entry2,entry3]`,
94+
`--notification-url`, "entry1",
95+
`--notification-url`, file.Name())
96+
}
97+
98+
func testGetSecretsFromFiles(t *testing.T, flagName string, expected string, args ...string) {
7799
cmd := new(cobra.Command)
78100
SetDefaults()
79101
RegisterNotificationFlags(cmd)
102+
require.NoError(t, cmd.ParseFlags(args))
80103
GetSecretsFromFiles(cmd)
81-
value, err := cmd.PersistentFlags().GetString(flagName)
82-
require.NoError(t, err)
104+
flag := cmd.PersistentFlags().Lookup(flagName)
105+
require.NotNil(t, flag)
106+
value := flag.Value.String()
83107

84108
assert.Equal(t, expected, value)
85109
}

0 commit comments

Comments
 (0)