56 lines
1.8 KiB
Go
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")
|
|
}
|
|
})
|
|
}
|
|
}
|