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