From ef380df362571d37b670ff6f8e0d90cf7f217b82 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 1 Dec 2025 22:49:29 +0000 Subject: [PATCH] test: Add edge case tests for normalizeNodeHost function Add 6 new test cases covering previously untested branches: - Empty host returns error - Whitespace-only host returns error - Unknown node type keeps host without port - Docker node type keeps host without port - IPv4 address gets default port - IPv4 with custom port preserved Coverage improved from 92.6% to 96.3%. --- internal/api/config_handlers_host_test.go | 48 ++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/internal/api/config_handlers_host_test.go b/internal/api/config_handlers_host_test.go index 2ac1113..0e81857 100644 --- a/internal/api/config_handlers_host_test.go +++ b/internal/api/config_handlers_host_test.go @@ -328,6 +328,7 @@ func TestNormalizeNodeHost(t *testing.T) { rawHost string nodeType string want string + wantErr bool }{ { name: "adds default port to explicit https without port", @@ -371,13 +372,58 @@ func TestNormalizeNodeHost(t *testing.T) { nodeType: "pve", want: "http://example.com:8006", }, + // Error cases + { + name: "empty host returns error", + rawHost: "", + nodeType: "pve", + wantErr: true, + }, + { + name: "whitespace-only host returns error", + rawHost: " ", + nodeType: "pve", + wantErr: true, + }, + // Unknown node type (no default port added) + { + name: "unknown node type keeps host without port", + rawHost: "https://example.com", + nodeType: "unknown", + want: "https://example.com", + }, + { + name: "docker node type keeps host without port", + rawHost: "https://docker.lan", + nodeType: "docker", + want: "https://docker.lan", + }, + // IPv4 addresses + { + name: "IPv4 address gets default port", + rawHost: "192.168.1.100", + nodeType: "pve", + want: "https://192.168.1.100:8006", + }, + { + name: "IPv4 with custom port preserved", + rawHost: "192.168.1.100:9000", + nodeType: "pve", + want: "https://192.168.1.100:9000", + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := normalizeNodeHost(tt.rawHost, tt.nodeType) + if tt.wantErr { + if err == nil { + t.Fatalf("normalizeNodeHost(%q, %q) expected error, got %q", tt.rawHost, tt.nodeType, got) + } + return + } if err != nil { - t.Fatalf("normalizeNodeHost returned error: %v", err) + t.Fatalf("normalizeNodeHost(%q, %q) returned error: %v", tt.rawHost, tt.nodeType, err) } if got != tt.want { t.Fatalf("normalizeNodeHost(%q, %q) = %q, want %q", tt.rawHost, tt.nodeType, got, tt.want)