fs-lawrisk/tests/test_template_api.py

122 lines
4.1 KiB
Python
Raw Normal View History

"""
直接测试模板管理API端点
不需要浏览器通过HTTP请求测试
"""
import requests
import os
import json
from datetime import datetime
BASE_URL = "http://localhost:8000"
API_BASE = f"{BASE_URL}/fs-ai-asistant/api/workflow/lawrisk"
def test_api_endpoints():
"""测试模板相关的API端点"""
print("=" * 60)
print("Template Management API Test")
print("=" * 60)
# 测试1: 获取模板元数据
print("\n[1/5] Getting template metadata...")
try:
response = requests.get(f"{API_BASE}/admin/templates/permit")
print(f" Status: {response.status_code}")
if response.status_code == 200:
data = response.json()
print(f" Success! Response data:")
print(f" {json.dumps(data, indent=2, ensure_ascii=False)}")
else:
print(f" Failed: {response.text}")
except Exception as e:
print(f" Error: {e}")
# 测试2: 下载模板
print("\n[2/5] Downloading template...")
try:
response = requests.get(f"{API_BASE}/admin/permit-import/template")
print(f" Status: {response.status_code}")
if response.status_code == 200:
filename = "api_downloaded_template.xlsx"
with open(filename, 'wb') as f:
f.write(response.content)
print(f" Success! Downloaded {len(response.content)} bytes to {filename}")
else:
print(f" Failed: {response.text}")
except Exception as e:
print(f" Error: {e}")
# 测试3: 检查目录
print("\n[3/5] Checking template directory...")
template_dir = "data/template"
if os.path.exists(template_dir):
files = os.listdir(template_dir)
print(f" Files in {template_dir}:")
for f in files:
size = os.path.getsize(os.path.join(template_dir, f))
print(f" - {f} ({size} bytes)")
else:
print(f" Directory {template_dir} not found")
# 测试4: 检查测试文件
print("\n[4/5] Checking test files...")
test_files = [
"RiskTemplate_Test.xlsx",
"RiskTemplate_Original.xlsx"
]
for f in test_files:
if os.path.exists(f):
size = os.path.getsize(f)
print(f" Found: {f} ({size} bytes)")
else:
print(f" Missing: {f}")
# 测试5: 模拟上传使用session
print("\n[5/5] Testing upload with session...")
try:
session = requests.Session()
# 先检查登录状态
response = session.get(f"{BASE_URL}/auth/me")
print(f" Auth check status: {response.status_code}")
if response.status_code == 200:
user_data = response.json()
print(f" Logged in as: {user_data.get('user', {}).get('username', 'unknown')}")
# 尝试上传测试文件
if os.path.exists("RiskTemplate_Test.xlsx"):
with open("RiskTemplate_Test.xlsx", 'rb') as f:
files = {'file': f}
upload_response = session.post(
f"{API_BASE}/admin/templates/permit",
files=files
)
print(f" Upload status: {upload_response.status_code}")
if upload_response.status_code == 200:
print(f" Upload successful!")
print(f" Response: {upload_response.json()}")
else:
print(f" Upload failed: {upload_response.text}")
else:
print(f" Test file not found, skipping upload")
else:
print(f" Not logged in (this is expected)")
print(f" To test upload manually, please:")
print(f" 1. Login at {BASE_URL}/fs-ai-asistant/api/workflow/lawrisk/login")
print(f" 2. Then run this script again")
except Exception as e:
print(f" Error: {e}")
print("\n" + "=" * 60)
print("API Test Complete")
print("=" * 60)
if __name__ == "__main__":
test_api_endpoints()