第一次提交
This commit is contained in:
108
backend/tests/test_workflows.py
Normal file
108
backend/tests/test_workflows.py
Normal file
@@ -0,0 +1,108 @@
|
||||
"""
|
||||
工作流API测试
|
||||
"""
|
||||
import pytest
|
||||
from fastapi import status
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
@pytest.mark.workflow
|
||||
class TestWorkflows:
|
||||
"""工作流相关测试"""
|
||||
|
||||
def test_create_workflow(self, authenticated_client, sample_workflow_data):
|
||||
"""测试创建工作流"""
|
||||
response = authenticated_client.post(
|
||||
"/api/v1/workflows",
|
||||
json=sample_workflow_data
|
||||
)
|
||||
assert response.status_code == status.HTTP_201_CREATED
|
||||
data = response.json()
|
||||
assert data["name"] == sample_workflow_data["name"]
|
||||
assert data["description"] == sample_workflow_data["description"]
|
||||
assert "id" in data
|
||||
assert "nodes" in data
|
||||
assert "edges" in data
|
||||
|
||||
def test_get_workflow_list(self, authenticated_client, sample_workflow_data):
|
||||
"""测试获取工作流列表"""
|
||||
# 创建几个工作流
|
||||
for i in range(3):
|
||||
workflow_data = sample_workflow_data.copy()
|
||||
workflow_data["name"] = f"工作流{i+1}"
|
||||
authenticated_client.post("/api/v1/workflows", json=workflow_data)
|
||||
|
||||
# 获取列表
|
||||
response = authenticated_client.get("/api/v1/workflows")
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
data = response.json()
|
||||
assert isinstance(data, list)
|
||||
assert len(data) >= 3
|
||||
|
||||
def test_get_workflow_detail(self, authenticated_client, sample_workflow_data):
|
||||
"""测试获取工作流详情"""
|
||||
# 创建工作流
|
||||
create_response = authenticated_client.post(
|
||||
"/api/v1/workflows",
|
||||
json=sample_workflow_data
|
||||
)
|
||||
workflow_id = create_response.json()["id"]
|
||||
|
||||
# 获取详情
|
||||
response = authenticated_client.get(f"/api/v1/workflows/{workflow_id}")
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
data = response.json()
|
||||
assert data["id"] == workflow_id
|
||||
assert data["name"] == sample_workflow_data["name"]
|
||||
assert len(data["nodes"]) == len(sample_workflow_data["nodes"])
|
||||
assert len(data["edges"]) == len(sample_workflow_data["edges"])
|
||||
|
||||
def test_update_workflow(self, authenticated_client, sample_workflow_data):
|
||||
"""测试更新工作流"""
|
||||
# 创建工作流
|
||||
create_response = authenticated_client.post(
|
||||
"/api/v1/workflows",
|
||||
json=sample_workflow_data
|
||||
)
|
||||
workflow_id = create_response.json()["id"]
|
||||
|
||||
# 更新工作流
|
||||
update_data = sample_workflow_data.copy()
|
||||
update_data["name"] = "更新后的工作流"
|
||||
update_data["description"] = "更新后的描述"
|
||||
|
||||
response = authenticated_client.put(
|
||||
f"/api/v1/workflows/{workflow_id}",
|
||||
json=update_data
|
||||
)
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
data = response.json()
|
||||
assert data["name"] == "更新后的工作流"
|
||||
assert data["description"] == "更新后的描述"
|
||||
|
||||
def test_delete_workflow(self, authenticated_client, sample_workflow_data):
|
||||
"""测试删除工作流"""
|
||||
# 创建工作流
|
||||
create_response = authenticated_client.post(
|
||||
"/api/v1/workflows",
|
||||
json=sample_workflow_data
|
||||
)
|
||||
workflow_id = create_response.json()["id"]
|
||||
|
||||
# 删除工作流
|
||||
response = authenticated_client.delete(f"/api/v1/workflows/{workflow_id}")
|
||||
assert response.status_code == status.HTTP_200_OK
|
||||
|
||||
# 验证已删除
|
||||
get_response = authenticated_client.get(f"/api/v1/workflows/{workflow_id}")
|
||||
assert get_response.status_code == status.HTTP_404_NOT_FOUND
|
||||
|
||||
def test_get_workflow_not_found(self, authenticated_client):
|
||||
"""测试获取不存在的工作流"""
|
||||
response = authenticated_client.get("/api/v1/workflows/nonexistent-id")
|
||||
assert response.status_code == status.HTTP_404_NOT_FOUND
|
||||
|
||||
def test_create_workflow_unauthorized(self, client, sample_workflow_data):
|
||||
"""测试未授权创建工作流"""
|
||||
response = client.post("/api/v1/workflows", json=sample_workflow_data)
|
||||
assert response.status_code == status.HTTP_401_UNAUTHORIZED
|
||||
Reference in New Issue
Block a user