package proxmox import "testing" func TestNormalizeFingerprint(t *testing.T) { // 64-hex with colons (the /nodes ssl_fingerprint form) normalizes fine. const withColons = "BA:7C:99:7D:45:D0:67:91:E2:F2:72:74:6E:D6:9F:83:51:D1:61:E5:C3:BD:F6:A0:B8:0B:E3:D8:DB:89:5B:CF" got, err := normalizeFingerprint(withColons) if err != nil { t.Fatalf("normalize: %v", err) } if len(got) != 64 { t.Errorf("len = %d", len(got)) } if got != "ba7c997d45d06791e2f272746ed69f8351d161e5c3bdf6a0b80be3d8db895bcf" { t.Errorf("got %q", got) } } func TestNormalizeFingerprint_Bad(t *testing.T) { for _, c := range []string{"", "tooshort", "zz7c997d45d06791e2f272746ed69f8351d161e5c3bdf6a0b80be3d8db895bcf"} { if _, err := normalizeFingerprint(c); err == nil { t.Errorf("normalize(%q) = nil, want error", c) } } } func TestTLSConfig_Build(t *testing.T) { // Fingerprint pin produces a config with a pin verifier (and the documented // InsecureSkipVerify=true that the verifier overrides). c, err := (TLSConfig{Fingerprint: "ba7c997d45d06791e2f272746ed69f8351d161e5c3bdf6a0b80be3d8db895bcf"}).build() if err != nil { t.Fatalf("build pin: %v", err) } if c.VerifyPeerCertificate == nil { t.Errorf("pin config missing VerifyPeerCertificate") } // Default (no trust set) uses system roots, no skip. def, err := (TLSConfig{}).build() if err != nil { t.Fatalf("build default: %v", err) } if def.InsecureSkipVerify { t.Errorf("default must verify") } }