package config import ( "os" "testing" "github.com/stretchr/testify/require" ) func TestLoad_FromEnv(t *testing.T) { t.Setenv("APP_ENV", "test") t.Setenv("APP_HTTP_ADDR", ":9090") t.Setenv("APP_DB_DSN", "postgres://test") t.Setenv("APP_MASTER_KEY", "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff") t.Setenv("APP_DATA_DIR", "/tmp/acw") t.Setenv("APP_BOOTSTRAP_ADMIN_EMAIL", "a@b.c") t.Setenv("APP_BOOTSTRAP_ADMIN_PASSWORD", "pw12345678") cfg, err := Load("") require.NoError(t, err) require.Equal(t, "test", cfg.Env) require.Equal(t, ":9090", cfg.HTTP.Addr) require.Equal(t, "postgres://test", cfg.DB.DSN) require.Len(t, cfg.MasterKey, 32) // hex decoded → 32 bytes require.Equal(t, "/tmp/acw", cfg.DataDir) require.Equal(t, "a@b.c", cfg.Bootstrap.AdminEmail) } func TestLoad_MissingMasterKey(t *testing.T) { os.Clearenv() t.Setenv("APP_DB_DSN", "x") _, err := Load("") require.Error(t, err) require.Contains(t, err.Error(), "MASTER_KEY") } func TestLoad_MasterKeyWrongLength(t *testing.T) { t.Setenv("APP_MASTER_KEY", "deadbeef") // too short t.Setenv("APP_DB_DSN", "x") _, err := Load("") require.Error(t, err) }