54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package config_test
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/veylant/ia-gateway/internal/config"
|
|
)
|
|
|
|
func TestLoad_Defaults(t *testing.T) {
|
|
// No config.yaml in the test working directory — relies on defaults.
|
|
cfg, err := config.Load()
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, 8090, cfg.Server.Port)
|
|
assert.Equal(t, 30, cfg.Server.ShutdownTimeout)
|
|
assert.Equal(t, "development", cfg.Server.Env)
|
|
assert.Equal(t, "info", cfg.Log.Level)
|
|
assert.Equal(t, "json", cfg.Log.Format)
|
|
assert.Equal(t, "https://api.openai.com/v1", cfg.Providers.OpenAI.BaseURL)
|
|
assert.Equal(t, 30, cfg.Providers.OpenAI.TimeoutSeconds)
|
|
assert.Equal(t, 100, cfg.Providers.OpenAI.MaxConns)
|
|
assert.True(t, cfg.Metrics.Enabled)
|
|
assert.Equal(t, "/metrics", cfg.Metrics.Path)
|
|
}
|
|
|
|
func TestLoad_EnvVarOverride(t *testing.T) {
|
|
t.Setenv("VEYLANT_SERVER_PORT", "9999")
|
|
t.Setenv("VEYLANT_LOG_LEVEL", "debug")
|
|
t.Setenv("VEYLANT_SERVER_ENV", "production")
|
|
|
|
cfg, err := config.Load()
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, 9999, cfg.Server.Port)
|
|
assert.Equal(t, "debug", cfg.Log.Level)
|
|
assert.Equal(t, "production", cfg.Server.Env)
|
|
}
|
|
|
|
func TestLoad_NoConfigFileIsNotAnError(t *testing.T) {
|
|
// Change to a temp directory with no config.yaml to confirm graceful fallback.
|
|
dir := t.TempDir()
|
|
origDir, _ := os.Getwd()
|
|
require.NoError(t, os.Chdir(dir))
|
|
t.Cleanup(func() { _ = os.Chdir(origDir) })
|
|
|
|
cfg, err := config.Load()
|
|
require.NoError(t, err)
|
|
assert.NotNil(t, cfg)
|
|
}
|