Add read-only guest monitoring agents
This commit is contained in:
57
agent_test.go
Normal file
57
agent_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestAgentEnrollmentTokenIsSingleUse(t *testing.T) {
|
||||
store, err := openStore(":memory:")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer store.Close()
|
||||
token, err := store.CreateAgentEnrollmentToken()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
credentials, err := store.EnrollAgent(agentEnrollmentRequest{Token: token, Name: "docker-01", Hostname: "vm105", VMID: 105})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if credentials.ID == "" || credentials.Secret == "" {
|
||||
t.Fatal("credentials were not generated")
|
||||
}
|
||||
if _, err = store.EnrollAgent(agentEnrollmentRequest{Token: token, Hostname: "duplicate"}); err == nil {
|
||||
t.Fatal("token was accepted twice")
|
||||
}
|
||||
}
|
||||
|
||||
func TestAgentReportAuthenticationAndOfflineState(t *testing.T) {
|
||||
store, err := openStore(":memory:")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer store.Close()
|
||||
token, _ := store.CreateAgentEnrollmentToken()
|
||||
credentials, _ := store.EnrollAgent(agentEnrollmentRequest{Token: token, Name: "docker", Hostname: "vm", VMID: 101})
|
||||
report := AgentReport{Hostname: "vm", Version: "test", DockerAvailable: true, Containers: []AgentContainer{{ID: "abc", Name: "web", State: "running"}}}
|
||||
if err = store.SaveAgentReport(credentials.ID, "wrong", "127.0.0.1", report); err == nil {
|
||||
t.Fatal("invalid secret accepted")
|
||||
}
|
||||
if err = store.SaveAgentReport(credentials.ID, credentials.Secret, "127.0.0.1", report); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
agents, err := store.Agents()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(agents) != 1 || !agents[0].Online || len(agents[0].Report.Containers) != 1 {
|
||||
t.Fatalf("unexpected agents: %#v", agents)
|
||||
}
|
||||
_, _ = store.db.Exec(`UPDATE agents SET last_seen=? WHERE id=?`, time.Now().Add(-time.Minute).Unix(), credentials.ID)
|
||||
agents, _ = store.Agents()
|
||||
if agents[0].Online {
|
||||
t.Fatal("stale agent is online")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user