Pulse/internal/config/client_helpers_test.go

121 lines
3.2 KiB
Go

package config
import "testing"
func TestNormalizeHostPort(t *testing.T) {
tests := []struct {
name string
host string
defaultPort string
want string
}{
{
name: "adds default port to https host",
host: "https://example.com",
defaultPort: defaultPVEPort,
want: "https://example.com:8006",
},
{
name: "adds default port when scheme missing",
host: "pbs.lan",
defaultPort: defaultPBSPort,
want: "https://pbs.lan:8007",
},
{
name: "preserves existing port and scheme",
host: "http://example.com:8443",
defaultPort: defaultPVEPort,
want: "http://example.com:8443",
},
{
name: "drops path segments before applying port",
host: "https://example.com/api",
defaultPort: defaultPVEPort,
want: "https://example.com:8006",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := normalizeHostPort(tt.host, tt.defaultPort); got != tt.want {
t.Fatalf("normalizeHostPort(%q, %q) = %q, want %q", tt.host, tt.defaultPort, got, tt.want)
}
})
}
}
func TestCreateConfigHelpersNormalizeHosts(t *testing.T) {
pveCfg := PVEInstance{
Host: "https://pve.local",
User: "root@pam",
}
pveClientCfg := CreateProxmoxConfig(&pveCfg)
if pveClientCfg.Host != "https://pve.local:8006" {
t.Fatalf("expected default port on PVE host, got %q", pveClientCfg.Host)
}
pbsCfg := PBSInstance{
Host: "pbs.local",
User: "root@pam",
}
pbsClientCfg := CreatePBSConfig(&pbsCfg)
if pbsClientCfg.Host != "https://pbs.local:8007" {
t.Fatalf("expected default PBS port on host, got %q", pbsClientCfg.Host)
}
pmgCfg := PMGInstance{
Host: "https://pmg.local/api",
User: "root@pam",
}
pmgClientCfg := CreatePMGConfig(&pmgCfg)
if pmgClientCfg.Host != "https://pmg.local:8006" {
t.Fatalf("expected default PMG port on host, got %q", pmgClientCfg.Host)
}
fromFields := CreateProxmoxConfigFromFields("https://cluster.local", "root@pam", "", "token!name", "value", "", true)
if fromFields.Host != "https://cluster.local:8006" {
t.Fatalf("expected default port on host built from fields, got %q", fromFields.Host)
}
}
func TestStripDefaultPort(t *testing.T) {
tests := []struct {
name string
host string
defaultPort string
want string
}{
{
name: "removes default PVE port",
host: "https://pve.local:8006",
defaultPort: defaultPVEPort,
want: "https://pve.local",
},
{
name: "keeps non-default port",
host: "https://pve.local:8443",
defaultPort: defaultPVEPort,
want: "https://pve.local:8443",
},
{
name: "preserves http scheme when removing port",
host: "http://pve.local:8006",
defaultPort: defaultPVEPort,
want: "http://pve.local",
},
{
name: "returns trimmed host unchanged when parse fails",
host: "://bad",
defaultPort: defaultPVEPort,
want: "://bad",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := StripDefaultPort(tt.host, tt.defaultPort); got != tt.want {
t.Fatalf("StripDefaultPort(%q, %q) = %q, want %q", tt.host, tt.defaultPort, got, tt.want)
}
})
}
}