Harden production workflows and agent admission

This commit is contained in:
Stanislav Rossovskii
2026-05-28 14:19:27 +04:00
parent a2e88b4e76
commit 37b1a1d6d6
109 changed files with 4927 additions and 894 deletions

View File

@@ -24,7 +24,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
@@ -57,7 +56,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
@@ -87,7 +85,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
@@ -100,6 +97,36 @@ timeout = "5s"
}
}
func TestEmptyCommandRejected(t *testing.T) {
for name, cmd := range map[string]string{
"empty": `""`,
"whitespace": `" \t "`,
} {
t.Run(name, func(t *testing.T) {
_, err := Load(writeTmp(t, `
agent_id = "host-1"
state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
[[checks]]
id = "c1"
command = `+cmd+`
interval = "10s"
timeout = "5s"
`))
if err == nil {
t.Fatal("expected empty command to be rejected")
}
if !strings.Contains(err.Error(), "command is required") {
t.Fatalf("unexpected error: %v", err)
}
})
}
}
func TestLoadLabels(t *testing.T) {
c, err := Load(writeTmp(t, `
agent_id = "host-1"
@@ -112,7 +139,6 @@ role = "api"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
@@ -148,7 +174,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
command = "true"
@@ -167,7 +192,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
command = "true"
@@ -188,7 +212,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
command = "true"
@@ -268,7 +291,28 @@ interval = "10s"
timeout = "5s"
`))
if err == nil {
t.Fatal("push_only must require server.url/token")
t.Fatal("push_only must require server.url")
}
}
func TestServerTokenRejected(t *testing.T) {
_, err := Load(writeTmp(t, `
state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "obsolete"
[[checks]]
id = "c1"
command = "true"
interval = "10s"
timeout = "5s"
`))
if err == nil {
t.Fatal("expected obsolete server.token to be rejected")
}
if !strings.Contains(err.Error(), "server.token") {
t.Fatalf("unexpected error: %v", err)
}
}
@@ -279,7 +323,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
command = "true"
@@ -291,6 +334,27 @@ timeout = "5s"
}
}
func TestHostnameConfigKeyRejected(t *testing.T) {
_, err := Load(writeTmp(t, `
hostname = "host-1"
state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
[[checks]]
id = "c1"
command = "true"
interval = "10s"
timeout = "5s"
`))
if err == nil {
t.Fatal("expected hostname key to be rejected")
}
if !strings.Contains(err.Error(), "hostname") {
t.Fatalf("unexpected error: %v", err)
}
}
func TestNotificationsEnabledCanDisable(t *testing.T) {
c, err := Load(writeTmp(t, minimal+`
notifications_enabled = false
@@ -329,7 +393,6 @@ state_dir = "/tmp/x"
[server]
enabled = true
url = "http://localhost"
token = "t"
[[checks]]
id = "c1"
command = "true"