Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package chat
|
||
|
||
import (
|
||
"testing"
|
||
|
||
"github.com/Tencent/WeKnora/internal/types"
|
||
)
|
||
|
||
// TestConfigFromModel 验证 ConfigFromModel 能把 types.Model 完整映射到 ChatConfig,
|
||
// 避免后续新加字段时只在生产路径或测试路径其中一侧更新导致功能漏配。
|
||
func TestConfigFromModel(t *testing.T) {
|
||
m := &types.Model{
|
||
ID: "model-123",
|
||
Name: "gpt-4o-mini",
|
||
Source: types.ModelSourceRemote,
|
||
Parameters: types.ModelParameters{
|
||
BaseURL: "https://api.example.com/v1",
|
||
APIKey: "sk-xxx",
|
||
Provider: "openai",
|
||
ExtraConfig: map[string]string{
|
||
"deployment": "prod",
|
||
},
|
||
CustomHeaders: map[string]string{
|
||
"X-Gateway-Token": "abc",
|
||
"X-Trace-ID": "t-1",
|
||
},
|
||
},
|
||
}
|
||
|
||
cfg := ConfigFromModel(m, "app-id", "app-secret")
|
||
if cfg == nil {
|
||
t.Fatal("ConfigFromModel returned nil")
|
||
}
|
||
if cfg.ModelID != "model-123" || cfg.ModelName != "gpt-4o-mini" {
|
||
t.Errorf("model identity not propagated: %+v", cfg)
|
||
}
|
||
if cfg.BaseURL != "https://api.example.com/v1" || cfg.APIKey != "sk-xxx" {
|
||
t.Errorf("connection fields not propagated: %+v", cfg)
|
||
}
|
||
if cfg.Provider != "openai" {
|
||
t.Errorf("provider not propagated: %q", cfg.Provider)
|
||
}
|
||
if cfg.ExtraConfig["deployment"] != "prod" {
|
||
t.Errorf("ExtraConfig not propagated: %+v", cfg.ExtraConfig)
|
||
}
|
||
if cfg.CustomHeaders["X-Gateway-Token"] != "abc" ||
|
||
cfg.CustomHeaders["X-Trace-ID"] != "t-1" {
|
||
t.Errorf("CustomHeaders not propagated: %+v", cfg.CustomHeaders)
|
||
}
|
||
if cfg.AppID != "app-id" || cfg.AppSecret != "app-secret" {
|
||
t.Errorf("cloud credentials not propagated: %+v", cfg)
|
||
}
|
||
}
|
||
|
||
func TestConfigFromModel_Nil(t *testing.T) {
|
||
if got := ConfigFromModel(nil, "", ""); got != nil {
|
||
t.Fatalf("expected nil for nil model, got %+v", got)
|
||
}
|
||
}
|