Files
go-omni/database/configOverlay_test.go

36 lines
916 B
Go

package database
import (
"encoding/json"
"strings"
"testing"
"time"
)
func TestApplyEnvPreservesFilePoolAndHidesDSN(t *testing.T) {
cfg := DefaultConfig()
cfg.MaxOpenConns = 3
cfg.MaxIdleConns = 1
cfg.PingTimeout = time.Second
t.Setenv("OMNI_TEST_DSN", "user:secret@tcp(localhost:3306)/test")
t.Setenv("OMNI_TEST_MAX_IDLE_CONNS", "0")
got, err := ApplyEnv(cfg, "OMNI_TEST_")
if err != nil {
t.Fatal(err)
}
if got.MaxOpenConns != 3 || got.MaxIdleConns != 0 || got.PingTimeout != time.Second {
t.Fatalf("lost file defaults: %+v", got)
}
data, err := json.Marshal(got)
if err != nil {
t.Fatal(err)
}
if strings.Contains(string(data), "secret") || !strings.Contains(string(data), "maxOpenConns") {
t.Fatalf("unsafe config encoding: %s", data)
}
t.Setenv("OMNI_TEST_MAX_OPEN_CONNS", "bad")
if _, err = ApplyEnv(cfg, "OMNI_TEST_"); err == nil {
t.Fatal("invalid override accepted")
}
}