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