package main
import (
"bytes"
"strings"
"testing"
)
func TestCommandHelp(t *testing.T) {
t.Setenv("DATABASE_URL", "postgres://test:secret-help-sentinel@127.0.0.1:1/nonexistent")
for _, args := range [][]string{{"--help"}, {"-h"}, {"help"}, {"migrate", "--help"}, {"migrate", "-h"}, {"help", "migrate"}} {
var out bytes.Buffer
done, err := commandHelp(args, &out)
if !done || err != nil {
t.Fatalf("%v: done=%v err=%v", args, done, err)
}
for _, want := range []string{"Usage: contentd", "DATABASE_URL", "Example"} {
if !strings.Contains(out.String(), want) {
t.Errorf("%v missing %q", args, want)
}
}
if strings.Contains(out.String(), "secret-help-sentinel") {
t.Fatal("help leaked credentials")
}
}
}
func TestCommandDispatch(t *testing.T) {
for _, args := range [][]string{nil, {"migrate"}} {
var out bytes.Buffer
done, err := commandHelp(args, &out)
if done || err != nil || out.Len() != 0 {
t.Fatalf("valid command %v intercepted", args)
}
}
for _, args := range [][]string{{"--unknown"}, {"migrate", "extra"}, {"serve"}} {
var out bytes.Buffer
done, err := commandHelp(args, &out)
if !done || err == nil {
t.Fatalf("invalid command %v accepted", args)
}
}
}