67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestLoadConfigDefaults(t *testing.T) {
|
|
t.Setenv("CARD_HOST", "")
|
|
t.Setenv("CARD_PORT", "")
|
|
t.Setenv("CARD_DLL_DIR", "")
|
|
t.Setenv("CARD_CORS_ORIGIN", "")
|
|
t.Setenv("CARD_LOG_DIR", "")
|
|
t.Setenv("CARD_LOG_MAX_FILE_MB", "")
|
|
t.Setenv("CARD_LOG_MAX_TOTAL_MB", "")
|
|
cfg, err := loadConfigAt(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.Port != 17880 || cfg.GUIReaderType != "ZJ_HZ_310000" || !filepath.IsAbs(cfg.LogDir) {
|
|
t.Fatalf("unexpected config: %#v", cfg)
|
|
}
|
|
}
|
|
|
|
func TestLoadConfigLogLimits(t *testing.T) {
|
|
t.Setenv("CARD_LOG_MAX_FILE_MB", "10")
|
|
t.Setenv("CARD_LOG_MAX_TOTAL_MB", "50")
|
|
cfg, err := loadConfigAt(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.LogMaxFileMB != 10 || cfg.LogMaxTotalMB != 50 {
|
|
t.Fatalf("unexpected log limits: %#v", cfg)
|
|
}
|
|
}
|
|
|
|
func TestLoadConfigRejectsTooSmallTotalLogLimit(t *testing.T) {
|
|
t.Setenv("CARD_LOG_MAX_FILE_MB", "20")
|
|
t.Setenv("CARD_LOG_MAX_TOTAL_MB", "40")
|
|
if _, err := loadConfigAt(t.TempDir()); err == nil {
|
|
t.Fatal("expected log total limit error")
|
|
}
|
|
}
|
|
|
|
func TestLoadConfigEnvironmentOverride(t *testing.T) {
|
|
t.Setenv("CARD_PORT", "18080")
|
|
t.Setenv("CARD_HOST", "0.0.0.0")
|
|
cfg, err := loadConfigAt(t.TempDir())
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if cfg.Port != 18080 || cfg.Host != "0.0.0.0" {
|
|
t.Fatalf("unexpected config: %#v", cfg)
|
|
}
|
|
}
|
|
|
|
func TestLoadConfigRejectsInvalidJSON(t *testing.T) {
|
|
dir := t.TempDir()
|
|
if err := os.WriteFile(filepath.Join(dir, "config.json"), []byte(`{`), 0o644); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := loadConfigAt(dir); err == nil {
|
|
t.Fatal("expected config error")
|
|
}
|
|
}
|