Files
go-sip/internal/ai/provider_endpoints_test.go
T

56 lines
1.8 KiB
Go

package ai
import "testing"
func TestBindUsesWSEndpointForSpeechAndAPIEndpointForLLM(t *testing.T) {
for _, asrProvider := range []string{"volcengine", "ali_bailian"} {
t.Run(asrProvider, func(t *testing.T) {
task, providers := currentFixture(t, "full_ai")
if asrProvider == "ali_bailian" {
task = changeCurrentAgent(t, task, func(agent map[string]any) {
agent["asr"].(map[string]any)["provider_ref"] = "ali_bailian"
})
}
for code, provider := range providers {
provider.Endpoint = "https://http-" + code + ".example.invalid/v1"
provider.WSEndpoint = "wss://stream-" + code + ".example.invalid/v1"
providers[code] = provider
}
binding, err := Bind(task, providers)
if err != nil {
t.Fatal(err)
}
if binding.ASR.Provider.Endpoint != providers[asrProvider].WSEndpoint || binding.TTS.Provider.Endpoint != providers["ali_bailian"].WSEndpoint || binding.LLM.Provider.Endpoint != providers["openai_compatible"].Endpoint {
t.Fatal("AI role selected the wrong connection endpoint")
}
if providers["ali_bailian"].Endpoint != "https://http-ali_bailian.example.invalid/v1" {
t.Fatal("binding mutated the reusable provider catalog")
}
})
}
}
func TestBindNeverFallsBackBetweenAPIAndWSEndpoints(t *testing.T) {
for _, role := range []string{"asr", "tts", "llm"} {
t.Run(role, func(t *testing.T) {
task, providers := currentFixture(t, "full_ai")
code := "volcengine"
if role == "tts" {
code = "ali_bailian"
} else if role == "llm" {
code = "openai_compatible"
}
provider := providers[code]
if role == "llm" {
provider.Endpoint = ""
} else {
provider.WSEndpoint = ""
}
providers[code] = provider
if _, err := Bind(task, providers); err == nil {
t.Fatal("missing endpoint was hidden by a fallback")
}
})
}
}