mirror of
https://github.com/henrygd/beszel.git
synced 2025-11-30 17:03:21 +00:00
76 lines
2.1 KiB
Go
76 lines
2.1 KiB
Go
//go:build testing
|
|
|
|
package systems
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestGetSystemdServiceId(t *testing.T) {
|
|
t.Run("deterministic output", func(t *testing.T) {
|
|
systemId := "sys-123"
|
|
serviceName := "nginx.service"
|
|
|
|
// Call multiple times and ensure same result
|
|
id1 := getSystemdServiceId(systemId, serviceName)
|
|
id2 := getSystemdServiceId(systemId, serviceName)
|
|
id3 := getSystemdServiceId(systemId, serviceName)
|
|
|
|
assert.Equal(t, id1, id2)
|
|
assert.Equal(t, id2, id3)
|
|
assert.NotEmpty(t, id1)
|
|
})
|
|
|
|
t.Run("different inputs produce different ids", func(t *testing.T) {
|
|
systemId1 := "sys-123"
|
|
systemId2 := "sys-456"
|
|
serviceName1 := "nginx.service"
|
|
serviceName2 := "apache.service"
|
|
|
|
id1 := getSystemdServiceId(systemId1, serviceName1)
|
|
id2 := getSystemdServiceId(systemId2, serviceName1)
|
|
id3 := getSystemdServiceId(systemId1, serviceName2)
|
|
id4 := getSystemdServiceId(systemId2, serviceName2)
|
|
|
|
// All IDs should be different
|
|
assert.NotEqual(t, id1, id2)
|
|
assert.NotEqual(t, id1, id3)
|
|
assert.NotEqual(t, id1, id4)
|
|
assert.NotEqual(t, id2, id3)
|
|
assert.NotEqual(t, id2, id4)
|
|
assert.NotEqual(t, id3, id4)
|
|
})
|
|
|
|
t.Run("consistent length", func(t *testing.T) {
|
|
testCases := []struct {
|
|
systemId string
|
|
serviceName string
|
|
}{
|
|
{"short", "short.service"},
|
|
{"very-long-system-id-that-might-be-used-in-practice", "very-long-service-name.service"},
|
|
{"", "empty-system.service"},
|
|
{"empty-service", ""},
|
|
{"", ""},
|
|
}
|
|
|
|
for _, tc := range testCases {
|
|
id := getSystemdServiceId(tc.systemId, tc.serviceName)
|
|
// FNV-32 produces 8 hex characters
|
|
assert.Len(t, id, 8, "ID should be 8 characters for systemId='%s', serviceName='%s'", tc.systemId, tc.serviceName)
|
|
}
|
|
})
|
|
|
|
t.Run("hexadecimal output", func(t *testing.T) {
|
|
id := getSystemdServiceId("test-system", "test-service")
|
|
assert.NotEmpty(t, id)
|
|
|
|
// Should only contain hexadecimal characters
|
|
for _, char := range id {
|
|
assert.True(t, (char >= '0' && char <= '9') || (char >= 'a' && char <= 'f'),
|
|
"ID should only contain hexadecimal characters, got: %s", id)
|
|
}
|
|
})
|
|
}
|