Files
sing-box/service/ocm/request_log_test.go
2026-03-28 02:00:27 +08:00

81 lines
1.9 KiB
Go

package ocm
import (
"strings"
"testing"
F "github.com/sagernet/sing/common/format"
)
func TestParseRequestLogMetadata(t *testing.T) {
t.Parallel()
metadata := parseRequestLogMetadata([]byte(`{
"model":"gpt-5.4",
"service_tier":"priority",
"reasoning":{"effort":"xhigh"}
}`))
if metadata.Model != "gpt-5.4" {
t.Fatalf("expected model gpt-5.4, got %q", metadata.Model)
}
if metadata.ServiceTier != "priority" {
t.Fatalf("expected priority service tier, got %q", metadata.ServiceTier)
}
if metadata.ReasoningEffort != "xhigh" {
t.Fatalf("expected xhigh reasoning effort, got %q", metadata.ReasoningEffort)
}
}
func TestParseRequestLogMetadataFallsBackToTopLevelReasoningEffort(t *testing.T) {
t.Parallel()
metadata := parseRequestLogMetadata([]byte(`{
"model":"gpt-5.4",
"reasoning_effort":"high"
}`))
if metadata.ReasoningEffort != "high" {
t.Fatalf("expected high reasoning effort, got %q", metadata.ReasoningEffort)
}
}
func TestBuildAssignedCredentialLogPartsIncludesThinkLevel(t *testing.T) {
t.Parallel()
message := F.ToString(buildAssignedCredentialLogParts("a", "session-1", "alice", requestLogMetadata{
Model: "gpt-5.4",
ServiceTier: "priority",
ReasoningEffort: "xhigh",
})...)
for _, fragment := range []string{
"assigned credential a",
"for session session-1",
"by user alice",
"model=gpt-5.4",
"think=xhigh",
"fast",
} {
if !strings.Contains(message, fragment) {
t.Fatalf("expected %q in %q", fragment, message)
}
}
}
func TestParseWebSocketResponseCreateRequestIncludesThinkLevel(t *testing.T) {
t.Parallel()
request, ok := parseWebSocketResponseCreateRequest([]byte(`{
"type":"response.create",
"model":"gpt-5.4",
"reasoning":{"effort":"xhigh"}
}`))
if !ok {
t.Fatal("expected websocket response.create request to parse")
}
if request.metadata().ReasoningEffort != "xhigh" {
t.Fatalf("expected xhigh reasoning effort, got %q", request.metadata().ReasoningEffort)
}
}