40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
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"
|
|
}
|