hn-readcard-go/config_test.go
2026-08-12 13:40:06 +08:00

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