Files
Agent-System/internal/server/chat_recategorize_api_test.go
T
weichen 3145550a59 feat(security): complete P0 release blocking remediation
Unify auth middleware and remove X-User-ID trust, add project_members
authorization, sandbox workspaces via resolver, and admin-only reconcile
by run_id. Introduce goose migrations with startup schema gate, fail closed
when DB unavailable outside explicit ALLOW_IN_MEMORY, bundle web/dist in
app Dockerfile, and remove frontend pseudo-login fallback.
2026-09-13 02:50:22 +00:00

57 lines
1.7 KiB
Go

package server_test
import (
"encoding/json"
"net/http"
"net/http/httptest"
"strings"
"testing"
"chat-agent-system/internal/bizdev"
"chat-agent-system/internal/config"
"chat-agent-system/internal/server"
)
func TestServer_ChatRecategorizeAPI(t *testing.T) {
cfg := &config.Config{
Env: "dev",
HTTPHost: "127.0.0.1",
HTTPPort: 8892,
DataDir: t.TempDir(),
}
svc := bizdev.MustNewService(t, cfg)
srv := server.NewServer(cfg, svc)
handler := srv.Routes()
sessID := "sess_recategorize_api_001"
ctx := t.Context()
ctxMgr := svc.ContextManager()
// 注入种子消息
_, _ = ctxMgr.RecordUserMessageWithID(ctx, sessID, 1, "user", "请问二类注册审批周期?", "QUERY_REGULATIONS", "", nil)
_, _ = ctxMgr.RecordUserMessageWithID(ctx, sessID, 0, "assistant", "根据现有规定,一般需 6-9 个月。", "", "", nil)
// 调用 POST /api/v1/chat/recategorize
reqBody := `{"session_id":"` + sessID + `"}`
req := httptest.NewRequest(http.MethodPost, "/api/v1/chat/recategorize", strings.NewReader(reqBody))
req.Header.Set("Content-Type", "application/json")
rec := httptest.NewRecorder()
handler.ServeHTTP(rec, req)
if rec.Code != http.StatusOK {
t.Fatalf("expected status 200, got %d: %s", rec.Code, rec.Body.String())
}
var res map[string]any
if err := json.Unmarshal(rec.Body.Bytes(), &res); err != nil {
t.Fatalf("json unmarshal failed: %v", err)
}
if success, ok := res["success"].(bool); !ok || !success {
t.Fatalf("expected success: true, got %v", res)
}
if totalProcessed, ok := res["total_processed"].(float64); !ok || totalProcessed < 2 {
t.Fatalf("expected total_processed >= 2, got %v", res["total_processed"])
}
}