package main import ( "strings" "testing" ) func TestRunRejectsCommandLineArgumentsWithoutEchoingThem(t *testing.T) { argument := "--password=" + randomArgumentValue(t) _, err := run(func(string) (string, bool) { return "", false }, []string{argument}) if err == nil || strings.Contains(err.Error(), argument) { t.Fatalf("run() error = %v, want non-sensitive argument rejection", err) } } func TestRunDoesNotExposeConfigurationValues(t *testing.T) { dsn := "sensitive-dsn-value" password := randomArgumentValue(t) _, err := run(func(name string) (string, bool) { return map[string]string{ "CHORUS_DSN": dsn, "CHORUS_ADMIN_USERNAME": "", "CHORUS_ADMIN_PASSWORD": password, }[name], true }, nil) if err == nil { t.Fatal("run() error = nil, want configuration error") } for _, sensitive := range []string{dsn, password} { if strings.Contains(err.Error(), sensitive) { t.Fatal("run() error exposed a sensitive configuration value") } } } func randomArgumentValue(t *testing.T) string { t.Helper() return t.Name() + "-value" }