package domain import "testing" func TestNormalizeOpenAICompatibleBaseEndpoint(t *testing.T) { tests := []struct { name string endpoint string want string wantErr bool }{ {name: "http host", endpoint: "http://provider.example", want: "http://provider.example"}, {name: "https nested path and whitespace", endpoint: " HTTPS://provider.example/api/openai/v1 ", want: "https://provider.example/api/openai/v1"}, {name: "IPv4 host and port", endpoint: "http://127.0.0.1:8080/v1", want: "http://127.0.0.1:8080/v1"}, {name: "IPv6 host and port", endpoint: "https://[::1]:8443/v1", want: "https://[::1]:8443/v1"}, {name: "repeated trailing slashes", endpoint: "https://provider.example/v1///", want: "https://provider.example/v1///"}, {name: "blank", endpoint: " \t\n ", wantErr: true}, {name: "relative path", endpoint: "/api/v1", wantErr: true}, {name: "scheme relative", endpoint: "//provider.example/v1", wantErr: true}, {name: "missing host", endpoint: "https:///v1", wantErr: true}, {name: "unsupported scheme", endpoint: "ftp://provider.example/v1", wantErr: true}, {name: "user information", endpoint: "https://user:secret@provider.example/v1", wantErr: true}, {name: "query", endpoint: "https://provider.example/v1?mode=chat", wantErr: true}, {name: "empty query", endpoint: "https://provider.example/v1?", wantErr: true}, {name: "fragment", endpoint: "https://provider.example/v1#chat", wantErr: true}, {name: "empty fragment", endpoint: "https://provider.example/v1#", wantErr: true}, {name: "malformed URL", endpoint: "https://provider.example/%zz", wantErr: true}, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { got, err := NormalizeOpenAICompatibleBaseEndpoint(tc.endpoint) if tc.wantErr { if err == nil { t.Fatalf("expected endpoint error, got %q", got) } return } if err != nil { t.Fatalf("normalize endpoint: %v", err) } if got != tc.want { t.Fatalf("normalized endpoint = %q, want %q", got, tc.want) } }) } }