Files
yms-daemon/internal/systemd/systemctl_test.go
T

51 lines
1.7 KiB
Go

package systemd
import (
"testing"
)
func TestParseUnitPropertiesRequiresExactProperties(t *testing.T) {
t.Parallel()
unit, err := parseUnitProperties("yms-green.service", []byte("LoadState=loaded\nActiveState=inactive\nSubState=dead\n"))
if err != nil {
t.Fatalf("parse systemd properties: %v", err)
}
if unit.Name != "yms-green.service" || unit.LoadState != "loaded" || unit.ActiveState != "inactive" || unit.SubState != "dead" {
t.Fatalf("unexpected unit: %+v", unit)
}
invalid := [][]byte{
[]byte("LoadState=loaded\nActiveState=inactive\n"),
[]byte("LoadState=loaded\nActiveState=inactive\nSubState=dead\nDescription=YMS\n"),
[]byte("LoadState=loaded\nLoadState=loaded\nActiveState=inactive\nSubState=dead\n"),
}
for _, output := range invalid {
if _, err := parseUnitProperties("yms-green.service", output); err == nil {
t.Fatalf("expected exact property validation failure for %q", output)
}
}
}
func TestNewSystemctlRequiresAbsoluteExecutable(t *testing.T) {
t.Parallel()
if _, err := NewSystemctl("systemctl"); err == nil {
t.Fatal("expected relative executable path rejection")
}
manager, err := NewSystemctl("/usr/bin/systemctl")
if err != nil || manager.executable != "/usr/bin/systemctl" {
t.Fatalf("unexpected manager: manager=%+v err=%v", manager, err)
}
}
func TestValidateUnitNamePreservesOpaqueValue(t *testing.T) {
t.Parallel()
if err := validateUnitName("backend-green.service"); err != nil {
t.Fatalf("validate exact unit name: %v", err)
}
for _, name := range []string{"", " backend-green.service", "backend-green.service "} {
if err := validateUnitName(name); err == nil {
t.Fatalf("expected unit name rejection: %q", name)
}
}
}