package health import ( "testing" "time" ) func TestStatusIsHealthy(t *testing.T) { tests := []struct { name string status Status wantHealth bool }{ { name: "all healthy", status: Status{Containerd: true, APIServer: true, NodeReady: true}, wantHealth: true, }, { name: "containerd down", status: Status{Containerd: false, APIServer: true, NodeReady: true}, wantHealth: false, }, { name: "apiserver down", status: Status{Containerd: true, APIServer: false, NodeReady: true}, wantHealth: false, }, { name: "node not ready", status: Status{Containerd: true, APIServer: true, NodeReady: false}, wantHealth: false, }, { name: "all down", status: Status{Containerd: false, APIServer: false, NodeReady: false}, wantHealth: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if got := tt.status.IsHealthy(); got != tt.wantHealth { t.Errorf("IsHealthy() = %v, want %v", got, tt.wantHealth) } }) } } func TestNewChecker(t *testing.T) { // Test defaults c := NewChecker("", "", 0) if c.kubeconfigPath != "/var/lib/kubesolo/pki/admin/admin.kubeconfig" { t.Errorf("unexpected default kubeconfig: %s", c.kubeconfigPath) } if c.apiServerAddr != "127.0.0.1:6443" { t.Errorf("unexpected default apiserver addr: %s", c.apiServerAddr) } if c.timeout != 120*time.Second { t.Errorf("unexpected default timeout: %v", c.timeout) } // Test custom values c = NewChecker("/custom/kubeconfig", "10.0.0.1:6443", 30*time.Second) if c.kubeconfigPath != "/custom/kubeconfig" { t.Errorf("expected custom kubeconfig, got %s", c.kubeconfigPath) } if c.apiServerAddr != "10.0.0.1:6443" { t.Errorf("expected custom addr, got %s", c.apiServerAddr) } if c.timeout != 30*time.Second { t.Errorf("expected 30s timeout, got %v", c.timeout) } } func TestStatusMessage(t *testing.T) { s := &Status{ Containerd: true, APIServer: true, NodeReady: true, Message: "all checks passed", } if s.Message != "all checks passed" { t.Errorf("unexpected message: %s", s.Message) } }