Files
incudal/agent/internal/config/config_test.go
T
2026-06-20 14:26:29 +08:00

52 lines
1.5 KiB
Go

package config
import (
"os"
"path/filepath"
"testing"
"time"
)
func TestLoadClampsHeartbeatInterval(t *testing.T) {
tests := []struct {
name string
value string
expected int
}{
{name: "too low", value: "1", expected: MinHeartbeatIntervalSeconds},
{name: "too high", value: "7200", expected: MaxHeartbeatIntervalSeconds},
{name: "valid", value: "60", expected: 60},
{name: "invalid", value: "invalid", expected: DefaultHeartbeatIntervalSeconds},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
configPath := writeTestConfig(t, tt.value)
cfg, err := Load(configPath)
if err != nil {
t.Fatalf("load config: %v", err)
}
if cfg.HeartbeatIntervalSeconds != tt.expected {
t.Fatalf("heartbeat seconds mismatch: got=%d want=%d", cfg.HeartbeatIntervalSeconds, tt.expected)
}
if cfg.HeartbeatInterval != time.Duration(tt.expected)*time.Second {
t.Fatalf("heartbeat interval mismatch: got=%s want=%s", cfg.HeartbeatInterval, time.Duration(tt.expected)*time.Second)
}
})
}
}
func writeTestConfig(t *testing.T, heartbeatInterval string) string {
t.Helper()
path := filepath.Join(t.TempDir(), "config.yaml")
content := "panel_url: \"https://panel.example\"\n" +
"agent_id: \"agt_test\"\n" +
"agent_secret: \"ias_test\"\n" +
"heartbeat_interval_seconds: " + heartbeatInterval + "\n"
if err := os.WriteFile(path, []byte(content), 0600); err != nil {
t.Fatalf("write config: %v", err)
}
return path
}