feat(config): загрузка env-конфига (DSN, ENC-ключ, listen)
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user