122 lines
4.1 KiB
Python
122 lines
4.1 KiB
Python
"""
|
||
直接测试模板管理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()
|