47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
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")
|
|
}
|
|
}
|