package api import ( "bytes" "net/http" "net/http/httptest" "strings" "testing" "github.com/gin-gonic/gin" "cmautobuy/admin/model" "cmautobuy/admin/service" ) func TestTaskPayload_包含不可变执行模式(t *testing.T) { payload := taskPayload(&model.Task{TaskID: "T-1", TaskType: model.TaskPurchase, ExecutionMode: model.TaskExecutionLive}) if payload["execution_mode"] != model.TaskExecutionLive { t.Fatalf("execution_mode=%v", payload["execution_mode"]) } } func TestResolvePurchaseSpec_请求体上限在进入数据库前拒绝(t *testing.T) { gin.SetMode(gin.TestMode) router := gin.New() Register(router, nil, nil, service.AIEndpointPolicy{}) body := bytes.Repeat([]byte("x"), service.MaxPurchaseSpecResolutionBodyBytes+1) request := httptest.NewRequest(http.MethodPost, "/api/v1/client/tasks/cg255/spec-resolution", bytes.NewReader(body)) request.Header.Set("X-Client-Id", "CLIENT-255") request.Header.Set("Idempotency-Key", "spec-resolution-v1:"+strings.Repeat("0", 64)) recorder := httptest.NewRecorder() router.ServeHTTP(recorder, request) if recorder.Code != http.StatusBadRequest || !strings.Contains(recorder.Body.String(), `"code":"INVALID_BODY"`) { t.Fatalf("status=%d body=%s", recorder.Code, recorder.Body.String()) } }