package config import ( "encoding/base64" "testing" ) func setEnv(t *testing.T, k, v string) { t.Helper() t.Setenv(k, v) } func TestLoadValid(t *testing.T) { key := make([]byte, 32) for i := range key { key[i] = byte(i) } setEnv(t, "DNS_AR_DB_DSN", "postgres://u:p@localhost:5432/db") setEnv(t, "DNS_AR_ENC_KEY", base64.StdEncoding.EncodeToString(key)) // DNS_AR_LISTEN не задан — дефолт cfg, err := Load() if err != nil { t.Fatal(err) } if cfg.DBDSN == "" || len(cfg.EncKey) != 32 || cfg.ListenAddr != ":8080" { t.Fatalf("unexpected cfg: %+v", cfg) } } func TestLoadRejectsShortKey(t *testing.T) { setEnv(t, "DNS_AR_DB_DSN", "postgres://x") setEnv(t, "DNS_AR_ENC_KEY", base64.StdEncoding.EncodeToString([]byte("short"))) if _, err := Load(); err == nil { t.Fatal("expected error for non-32-byte key") } } func TestLoadRejectsMissingDSN(t *testing.T) { key := make([]byte, 32) setEnv(t, "DNS_AR_DB_DSN", "") setEnv(t, "DNS_AR_ENC_KEY", base64.StdEncoding.EncodeToString(key)) if _, err := Load(); err == nil { t.Fatal("expected error for missing DSN") } }