fs-lawrisk/tests/test_template_api.py

122 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
直接测试模板管理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()