54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestLoadDefaultsWithEnv(t *testing.T) {
|
|
t.Setenv("NETTS_API_KEY", "env-key")
|
|
|
|
cfg, err := Load("")
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ":8080", cfg.Server.Address)
|
|
assert.Equal(t, "https://netts.io", cfg.Netts.BaseURL)
|
|
assert.Equal(t, 3, cfg.Energy.MinCycles)
|
|
assert.Equal(t, 10, cfg.Energy.TargetCycles)
|
|
assert.Equal(t, "env-key", cfg.Netts.APIKey)
|
|
}
|
|
|
|
func TestLoadFromFileOverridesDefaults(t *testing.T) {
|
|
dir := t.TempDir()
|
|
file := filepath.Join(dir, "config.yaml")
|
|
|
|
body := `
|
|
server:
|
|
address: ":9090"
|
|
readTimeout: 5s
|
|
netts:
|
|
apiKey: "file-key"
|
|
baseUrl: "https://example.com"
|
|
energy:
|
|
minCycles: 5
|
|
targetCycles: 8
|
|
logging:
|
|
level: debug
|
|
`
|
|
require.NoError(t, os.WriteFile(file, []byte(body), 0o600))
|
|
|
|
cfg, err := Load(file)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, ":9090", cfg.Server.Address)
|
|
assert.Equal(t, "https://example.com", cfg.Netts.BaseURL)
|
|
assert.Equal(t, 5, cfg.Energy.MinCycles)
|
|
assert.Equal(t, 8, cfg.Energy.TargetCycles)
|
|
assert.Equal(t, "file-key", cfg.Netts.APIKey)
|
|
assert.Equal(t, "debug", cfg.Logging.Level)
|
|
}
|