Files
chorus/cmd/chorus-admin-bootstrap/main_test.go
T

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"
}