Files
agentic-coding-workflow/internal/config/config_test.go
T

43 lines
1.1 KiB
Go

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