mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-27 00:06:13 +00:00
test: Add comprehensive tests for dockerServiceResourceID function
- with/without host ID (prefix selection) - derives ID from service name with sanitization - special chars replaced with dashes - preserves alphanumeric, underscore, hyphen - trims leading/trailing dashes/underscores - truncates long IDs to 32 chars - fallback to 'service' when empty - dockerServiceResourceID 23.8%→100%
This commit is contained in:
parent
60aa2d7cde
commit
8ecab8defa
1 changed files with 122 additions and 0 deletions
|
|
@ -2973,3 +2973,125 @@ func TestDockerServiceDisplayName(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestDockerServiceResourceID(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
hostID string
|
||||
serviceID string
|
||||
serviceName string
|
||||
expected string
|
||||
}{
|
||||
{
|
||||
name: "with host and service ID",
|
||||
hostID: "host-1",
|
||||
serviceID: "svc-123",
|
||||
serviceName: "my-service",
|
||||
expected: "docker:host-1/service/svc-123",
|
||||
},
|
||||
{
|
||||
name: "without host ID uses service prefix only",
|
||||
hostID: "",
|
||||
serviceID: "svc-123",
|
||||
serviceName: "my-service",
|
||||
expected: "docker-service:svc-123",
|
||||
},
|
||||
{
|
||||
name: "whitespace host ID treated as empty",
|
||||
hostID: " ",
|
||||
serviceID: "svc-123",
|
||||
serviceName: "my-service",
|
||||
expected: "docker-service:svc-123",
|
||||
},
|
||||
{
|
||||
name: "derives ID from service name when ID empty",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "My Service",
|
||||
expected: "docker:host-1/service/my-service",
|
||||
},
|
||||
{
|
||||
name: "special chars in name replaced with dash",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "my/service:v1.0",
|
||||
expected: "docker:host-1/service/my-service-v1-0",
|
||||
},
|
||||
{
|
||||
name: "backslash and colon replaced",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "path\\to:service",
|
||||
expected: "docker:host-1/service/path-to-service",
|
||||
},
|
||||
{
|
||||
name: "preserves alphanumeric and underscore",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "my_service_123",
|
||||
expected: "docker:host-1/service/my_service_123",
|
||||
},
|
||||
{
|
||||
name: "preserves hyphens",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "my-service-name",
|
||||
expected: "docker:host-1/service/my-service-name",
|
||||
},
|
||||
{
|
||||
name: "trims leading/trailing dashes and underscores",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "---my-service___",
|
||||
expected: "docker:host-1/service/my-service",
|
||||
},
|
||||
{
|
||||
name: "truncates long derived ID to 32 chars",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "this-is-a-very-long-service-name-that-exceeds-the-limit",
|
||||
expected: "docker:host-1/service/this-is-a-very-long-service-name",
|
||||
},
|
||||
{
|
||||
name: "uses 'service' when name is all special chars",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "!!!@@@###",
|
||||
expected: "docker:host-1/service/service",
|
||||
},
|
||||
{
|
||||
name: "uses 'service' when both ID and name empty",
|
||||
hostID: "host-1",
|
||||
serviceID: "",
|
||||
serviceName: "",
|
||||
expected: "docker:host-1/service/service",
|
||||
},
|
||||
{
|
||||
name: "uses 'service' when both ID and name whitespace",
|
||||
hostID: "host-1",
|
||||
serviceID: " ",
|
||||
serviceName: " ",
|
||||
expected: "docker:host-1/service/service",
|
||||
},
|
||||
{
|
||||
name: "no host and derived name",
|
||||
hostID: "",
|
||||
serviceID: "",
|
||||
serviceName: "webserver",
|
||||
expected: "docker-service:webserver",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
result := dockerServiceResourceID(tt.hostID, tt.serviceID, tt.serviceName)
|
||||
if result != tt.expected {
|
||||
t.Errorf("dockerServiceResourceID(%q, %q, %q) = %q, want %q",
|
||||
tt.hostID, tt.serviceID, tt.serviceName, result, tt.expected)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue