eigent/server/tests/history_delete.http
2026-03-03 20:20:47 +08:00

145 lines
3.9 KiB
HTTP

# ============================================================
# Delete Chat History cascade trigger deletion tests
#
# Flow:
# 1. Login to get a Bearer token
# 2. Create a project with 2 histories + 1 trigger
# 3. Delete the FIRST history trigger must NOT be deleted
# 4. Verify trigger still exists
# 5. Delete the LAST history trigger MUST be deleted
# 6. Verify trigger is gone (404)
# 7. Edge case: delete a non-existent history (404)
# ============================================================
@baseUrl = http://localhost:3001/api
@projectId = test-project-cascade-001
# Step 0: get a Bearer token
# @name login
POST {{baseUrl}}/login
Content-Type: application/json
{
"email": "test@example.com",
"password": "testpassword123"
}
###
# Paste the token from the login response below:
@token = {{login.response.body.token}}
# Step 1: create history A (first task in project)
# @name createHistoryA
POST {{baseUrl}}/chat/history
Content-Type: application/json
Authorization: Bearer {{token}}
{
"task_id": "task-a-001",
"project_id": "{{projectId}}",
"project_name": "Cascade Test Project",
"question": "First task in project",
"model_platform": "anthropic",
"model_type": "claude-3-5-haiku-20241022",
"installed_mcp": "default",
"api_url": "local",
"language": "en",
"tokens": 100
}
###
@historyIdA = {{createHistoryA.response.body.id}}
# Step 2: create history B (second task, same project)
# @name createHistoryB
POST {{baseUrl}}/chat/history
Content-Type: application/json
Authorization: Bearer {{token}}
{
"task_id": "task-b-001",
"project_id": "{{projectId}}",
"project_name": "Cascade Test Project",
"question": "Second task in project",
"model_platform": "anthropic",
"model_type": "claude-3-5-haiku-20241022",
"installed_mcp": "default",
"api_url": "local",
"language": "en",
"tokens": 200
}
###
@historyIdB = {{createHistoryB.response.body.id}}
# Step 3: create a trigger linked to the project
# @name createTrigger
POST {{baseUrl}}/trigger/
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name": "Cascade Test Trigger",
"project_id": "{{projectId}}",
"trigger_type": "schedule",
"custom_cron_expression": "0 9 * * 1",
"config": {
"max_failure_count": 5
}
}
###
@triggerId = {{createTrigger.response.body.id}}
# Step 4: verify project has 2 histories + 1 trigger
# Expect: task_count=2, total_triggers=1
GET {{baseUrl}}/chat/histories/grouped/{{projectId}}
Authorization: Bearer {{token}}
###
# Step 5: delete history A (NOT the last one)
# Expect: 204 No Content
# Trigger must remain intact
DELETE {{baseUrl}}/chat/history/{{historyIdA}}
###
# Step 6: confirm trigger still exists
# Expect: 200 with trigger data
GET {{baseUrl}}/trigger/{{triggerId}}
Authorization: Bearer {{token}}
###
# Step 7: confirm project now has only 1 history
# Expect: task_count=1
GET {{baseUrl}}/chat/histories/grouped/{{projectId}}
Authorization: Bearer {{token}}
###
# Step 8: delete history B (THE LAST one)
# Expect: 204 No Content
# Trigger MUST be deleted alongside it
DELETE {{baseUrl}}/chat/history/{{historyIdB}}
###
# Step 9: confirm trigger is now gone (cascade worked)
# Expect: 404 Not Found
GET {{baseUrl}}/trigger/{{triggerId}}
Authorization: Bearer {{token}}
###
# Step 10: confirm project is gone from grouped list
# Expect: 404 Not Found
GET {{baseUrl}}/chat/histories/grouped/{{projectId}}
Authorization: Bearer {{token}}
###