test: Add ApplyHostReport error path tests
Add 4 tests for error and edge cases: - Missing hostname returns error - Whitespace-only hostname returns error - Nil hostTokenBindings map is initialized - Fallback identifier generation Coverage: 63.7% → 70.8%
This commit is contained in:
parent
7c94f3001e
commit
67d322c456
1 changed files with 128 additions and 0 deletions
|
|
@ -616,3 +616,131 @@ func TestRemoveHostAgent_NilAlertManager(t *testing.T) {
|
|||
t.Errorf("expected host.ID = %q, got %q", hostID, host.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyHostReport_MissingHostname(t *testing.T) {
|
||||
monitor := &Monitor{
|
||||
state: models.NewState(),
|
||||
alertManager: alerts.NewManager(),
|
||||
hostTokenBindings: make(map[string]string),
|
||||
config: &config.Config{},
|
||||
}
|
||||
t.Cleanup(func() { monitor.alertManager.Stop() })
|
||||
|
||||
// Report with empty hostname should fail
|
||||
report := agentshost.Report{
|
||||
Host: agentshost.HostInfo{
|
||||
Hostname: "", // Missing hostname
|
||||
ID: "machine-id",
|
||||
},
|
||||
Agent: agentshost.AgentInfo{
|
||||
ID: "agent-id",
|
||||
Version: "1.0.0",
|
||||
},
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
|
||||
_, err := monitor.ApplyHostReport(report, nil)
|
||||
if err == nil {
|
||||
t.Error("expected error for missing hostname")
|
||||
}
|
||||
if err != nil && err.Error() != "host report missing hostname" {
|
||||
t.Errorf("expected 'host report missing hostname' error, got: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyHostReport_WhitespaceHostname(t *testing.T) {
|
||||
monitor := &Monitor{
|
||||
state: models.NewState(),
|
||||
alertManager: alerts.NewManager(),
|
||||
hostTokenBindings: make(map[string]string),
|
||||
config: &config.Config{},
|
||||
}
|
||||
t.Cleanup(func() { monitor.alertManager.Stop() })
|
||||
|
||||
// Report with whitespace-only hostname should fail
|
||||
report := agentshost.Report{
|
||||
Host: agentshost.HostInfo{
|
||||
Hostname: " ", // Whitespace only
|
||||
ID: "machine-id",
|
||||
},
|
||||
Agent: agentshost.AgentInfo{
|
||||
ID: "agent-id",
|
||||
Version: "1.0.0",
|
||||
},
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
|
||||
_, err := monitor.ApplyHostReport(report, nil)
|
||||
if err == nil {
|
||||
t.Error("expected error for whitespace-only hostname")
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyHostReport_NilTokenBindingsMap(t *testing.T) {
|
||||
monitor := &Monitor{
|
||||
state: models.NewState(),
|
||||
alertManager: alerts.NewManager(),
|
||||
hostTokenBindings: nil, // Nil map
|
||||
config: &config.Config{},
|
||||
}
|
||||
t.Cleanup(func() { monitor.alertManager.Stop() })
|
||||
|
||||
report := agentshost.Report{
|
||||
Host: agentshost.HostInfo{
|
||||
Hostname: "test-host",
|
||||
ID: "machine-id",
|
||||
},
|
||||
Agent: agentshost.AgentInfo{
|
||||
ID: "agent-id",
|
||||
Version: "1.0.0",
|
||||
},
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
|
||||
token := &config.APITokenRecord{ID: "token-id", Name: "Test Token"}
|
||||
|
||||
// Should not panic with nil hostTokenBindings - map should be initialized
|
||||
host, err := monitor.ApplyHostReport(report, token)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if host.Hostname != "test-host" {
|
||||
t.Errorf("expected hostname 'test-host', got %q", host.Hostname)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyHostReport_FallbackIdentifier(t *testing.T) {
|
||||
monitor := &Monitor{
|
||||
state: models.NewState(),
|
||||
alertManager: alerts.NewManager(),
|
||||
hostTokenBindings: make(map[string]string),
|
||||
config: &config.Config{},
|
||||
}
|
||||
t.Cleanup(func() { monitor.alertManager.Stop() })
|
||||
|
||||
// Report with no ID fields - should generate fallback identifier
|
||||
report := agentshost.Report{
|
||||
Host: agentshost.HostInfo{
|
||||
Hostname: "fallback-host",
|
||||
// No ID, MachineID
|
||||
},
|
||||
Agent: agentshost.AgentInfo{
|
||||
// No ID
|
||||
Version: "1.0.0",
|
||||
},
|
||||
Timestamp: time.Now(),
|
||||
}
|
||||
|
||||
host, err := monitor.ApplyHostReport(report, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
// Should use hostname as fallback identifier
|
||||
if host.ID == "" {
|
||||
t.Error("expected host to have an identifier")
|
||||
}
|
||||
if host.Hostname != "fallback-host" {
|
||||
t.Errorf("expected hostname 'fallback-host', got %q", host.Hostname)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue