mirror of
https://github.com/CJackHwang/ds2api.git
synced 2026-05-12 04:07:42 +08:00
- replace legacy DeepSeek ids with the new deepseek-v4 model family\n- move thinking control to request parameters and preserve assistant reasoning content\n- switch history split to IGNORE transcript injection and map upload auth failures to 401\n- update admin defaults, API docs, samples, and tests for the new model scheme
91 lines
2.6 KiB
Go
91 lines
2.6 KiB
Go
package config
|
|
|
|
import "testing"
|
|
|
|
type mockModelAliasReader map[string]string
|
|
|
|
func (m mockModelAliasReader) ModelAliases() map[string]string { return m }
|
|
|
|
func TestResolveModelDirectDeepSeek(t *testing.T) {
|
|
got, ok := ResolveModel(nil, "deepseek-v4-flash")
|
|
if !ok || got != "deepseek-v4-flash" {
|
|
t.Fatalf("expected deepseek-v4-flash, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestResolveModelAlias(t *testing.T) {
|
|
got, ok := ResolveModel(nil, "gpt-4.1")
|
|
if !ok || got != "deepseek-v4-flash" {
|
|
t.Fatalf("expected alias gpt-4.1 -> deepseek-v4-flash, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestResolveModelHeuristicReasoner(t *testing.T) {
|
|
got, ok := ResolveModel(nil, "o3-super")
|
|
if !ok || got != "deepseek-v4-pro" {
|
|
t.Fatalf("expected heuristic reasoner, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestResolveModelUnknown(t *testing.T) {
|
|
_, ok := ResolveModel(nil, "totally-custom-model")
|
|
if ok {
|
|
t.Fatal("expected unknown model to fail resolve")
|
|
}
|
|
}
|
|
|
|
func TestResolveModelRejectsLegacyDeepSeekIDs(t *testing.T) {
|
|
legacyModels := []string{
|
|
"deepseek-chat",
|
|
"deepseek-reasoner",
|
|
"deepseek-chat-search",
|
|
"deepseek-reasoner-search",
|
|
"deepseek-expert-chat",
|
|
"deepseek-expert-reasoner",
|
|
"deepseek-vision-chat",
|
|
}
|
|
for _, model := range legacyModels {
|
|
if got, ok := ResolveModel(nil, model); ok {
|
|
t.Fatalf("expected legacy model %q to be rejected, got %q", model, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestResolveModelDirectDeepSeekExpert(t *testing.T) {
|
|
got, ok := ResolveModel(nil, "deepseek-v4-pro")
|
|
if !ok || got != "deepseek-v4-pro" {
|
|
t.Fatalf("expected deepseek-v4-pro, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestResolveModelCustomAliasToExpert(t *testing.T) {
|
|
got, ok := ResolveModel(mockModelAliasReader{
|
|
"my-expert-model": "deepseek-v4-pro-search",
|
|
}, "my-expert-model")
|
|
if !ok || got != "deepseek-v4-pro-search" {
|
|
t.Fatalf("expected alias -> deepseek-v4-pro-search, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestResolveModelCustomAliasToVision(t *testing.T) {
|
|
got, ok := ResolveModel(mockModelAliasReader{
|
|
"my-vision-model": "deepseek-v4-vision-search",
|
|
}, "my-vision-model")
|
|
if !ok || got != "deepseek-v4-vision-search" {
|
|
t.Fatalf("expected alias -> deepseek-v4-vision-search, got ok=%v model=%q", ok, got)
|
|
}
|
|
}
|
|
|
|
func TestClaudeModelsResponsePaginationFields(t *testing.T) {
|
|
resp := ClaudeModelsResponse()
|
|
if _, ok := resp["first_id"]; !ok {
|
|
t.Fatalf("expected first_id in response: %#v", resp)
|
|
}
|
|
if _, ok := resp["last_id"]; !ok {
|
|
t.Fatalf("expected last_id in response: %#v", resp)
|
|
}
|
|
if _, ok := resp["has_more"]; !ok {
|
|
t.Fatalf("expected has_more in response: %#v", resp)
|
|
}
|
|
}
|