16b05476a1
CI / docker (push) Failing after 1m54s
引入用户端对话/生图与管理端 Provider 配置,统一 invoke 编排、Gateway、请求日志与模型管理;前端按设计规范拆分布局,Go module 更名为 github.com/rose_cat707/Atlas;生图长任务 SSE 推送;管理端登录防爆破;协议与服务类型联动;Replicate 模型同步修复;用户端创作台 UI 重构;管理端创作历史替代请求日志。 Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package provider
|
|
|
|
import "testing"
|
|
|
|
func TestModelsPath(t *testing.T) {
|
|
openai := ModelsPath(&Config{Protocol: "openai", ServiceType: "chat"})
|
|
if openai != "/v1/models?protocol=openai&service_type=chat" {
|
|
t.Fatalf("openai path: %s", openai)
|
|
}
|
|
replicate := ModelsPath(&Config{Protocol: "replicate", ServiceType: "image_generation"})
|
|
if replicate != "/v1/models?protocol=replicate&service_type=image_generation" {
|
|
t.Fatalf("replicate path: %s", replicate)
|
|
}
|
|
}
|
|
|
|
func TestParseReplicateModels(t *testing.T) {
|
|
body := []byte(`{
|
|
"results": [
|
|
{"owner":"stability-ai","name":"sdxl","description":"SDXL"},
|
|
{"owner":"black-forest-labs","name":"flux-schnell"}
|
|
]
|
|
}`)
|
|
models := parseReplicateModels(body)
|
|
if len(models) != 2 {
|
|
t.Fatalf("expected 2 models, got %d", len(models))
|
|
}
|
|
if models[0].ID != "stability-ai/sdxl" || models[0].Name != "SDXL" {
|
|
t.Fatalf("unexpected first model: %+v", models[0])
|
|
}
|
|
if models[1].ID != "black-forest-labs/flux-schnell" {
|
|
t.Fatalf("unexpected second model id: %s", models[1].ID)
|
|
}
|
|
}
|
|
|
|
func TestParseModelsForProtocol(t *testing.T) {
|
|
openaiBody := []byte(`{"data":[{"id":"gpt-4o","name":"GPT-4o"}]}`)
|
|
if models := parseModelsForProtocol("openai", openaiBody); len(models) != 1 || models[0].ID != "gpt-4o" {
|
|
t.Fatalf("openai parse failed: %+v", models)
|
|
}
|
|
replicateBody := []byte(`{"results":[{"owner":"a","name":"b"}]}`)
|
|
if models := parseModelsForProtocol("replicate", replicateBody); len(models) != 1 || models[0].ID != "a/b" {
|
|
t.Fatalf("replicate parse failed: %+v", models)
|
|
}
|
|
}
|