Files
ds2api/internal/rawsample/rawsample_test.go
CJACK 131ca7d398 feat: revamp DeepSeek v4 model handling
- 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
2026-04-26 00:02:14 +08:00

80 lines
2.2 KiB
Go

package rawsample
import (
"encoding/json"
"os"
"path/filepath"
"strings"
"testing"
)
func TestNormalizeSampleID(t *testing.T) {
got := NormalizeSampleID(" Hello, World! ")
if got != "hello-world" {
t.Fatalf("expected hello-world, got %q", got)
}
}
func TestPersistWritesSampleFilesAndMeta(t *testing.T) {
root := t.TempDir()
saved, err := Persist(PersistOptions{
RootDir: root,
SampleID: "My Sample! 01",
Source: "unit-test",
Request: map[string]any{
"model": "deepseek-v4-flash",
"stream": true,
"messages": []any{
map[string]any{"role": "user", "content": "广州天气"},
},
},
Capture: CaptureSummary{
Label: "deepseek_completion",
URL: "https://chat.deepseek.com/api/v0/chat/completion",
StatusCode: 200,
},
UpstreamBody: []byte("data: {\"v\":\"hello [reference:1]\"}\n\n" +
"data: {\"v\":\"FINISHED\",\"p\":\"response/status\"}\n\n"),
})
if err != nil {
t.Fatalf("Persist failed: %v", err)
}
if saved.SampleID != "my-sample-01" {
t.Fatalf("expected normalized sample id, got %q", saved.SampleID)
}
if _, err := os.Stat(saved.Dir); err != nil {
t.Fatalf("sample dir missing: %v", err)
}
if _, err := os.Stat(saved.UpstreamPath); err != nil {
t.Fatalf("upstream file missing: %v", err)
}
if _, err := os.Stat(filepath.Join(saved.Dir, "openai.stream.sse")); !os.IsNotExist(err) {
t.Fatalf("unexpected processed stream file: %v", err)
}
if _, err := os.Stat(filepath.Join(saved.Dir, "openai.output.txt")); !os.IsNotExist(err) {
t.Fatalf("unexpected processed text file: %v", err)
}
metaBytes, err := os.ReadFile(saved.MetaPath)
if err != nil {
t.Fatalf("read meta: %v", err)
}
var meta Meta
if err := json.Unmarshal(metaBytes, &meta); err != nil {
t.Fatalf("decode meta: %v", err)
}
if meta.SampleID != saved.SampleID {
t.Fatalf("expected meta sample id %q, got %q", saved.SampleID, meta.SampleID)
}
if meta.Capture.ReferenceMarkerCount != 1 {
t.Fatalf("expected one reference marker, got %+v", meta.Capture)
}
if meta.Capture.FinishedTokenCount != 1 {
t.Fatalf("expected one finished token, got %+v", meta.Capture)
}
if strings.Contains(string(metaBytes), "\"processed\"") {
t.Fatalf("meta should not include processed payload: %s", string(metaBytes))
}
}