This commit is contained in:
beabigegg
2025-09-02 13:11:48 +08:00
parent a60d965317
commit b11a8272c4
76 changed files with 15321 additions and 200 deletions

143
test_simple_api.py Normal file
View File

@@ -0,0 +1,143 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
簡化API測試腳本
"""
import requests
import json
import time
def test_api_endpoints():
"""測試API端點"""
print("=== API Testing ===")
# 使用已經存在的Flask應用如果正在運行
base_url = 'http://127.0.0.1:5000'
results = []
# 測試1: 健康檢查
print("\n1. Testing health check...")
try:
response = requests.get(f'{base_url}/health', timeout=5)
if response.status_code == 200:
print(" Health check: PASS")
results.append(('Health Check', True))
else:
print(f" Health check: FAIL ({response.status_code})")
results.append(('Health Check', False))
except Exception as e:
print(f" Health check: FAIL - {e}")
results.append(('Health Check', False))
# 測試2: 認證API - 無效用戶
print("\n2. Testing invalid login...")
try:
login_data = {
'username': 'invalid@test.com',
'password': 'wrongpassword'
}
response = requests.post(f'{base_url}/api/v1/auth/login',
json=login_data, timeout=10)
if response.status_code in [401, 404]:
print(" Invalid login rejection: PASS")
results.append(('Invalid Login Rejection', True))
else:
print(f" Invalid login rejection: FAIL ({response.status_code})")
results.append(('Invalid Login Rejection', False))
except Exception as e:
print(f" Invalid login test: FAIL - {e}")
results.append(('Invalid Login Rejection', False))
# 測試3: 認證API - 有效用戶如果能連接到LDAP
print("\n3. Testing valid login...")
try:
login_data = {
'username': 'ymirliu@panjit.com.tw',
'password': 'ˇ3EDC4rfv5tgb'
}
response = requests.post(f'{base_url}/api/v1/auth/login',
json=login_data, timeout=15)
if response.status_code == 200:
result = response.json()
if result.get('success'):
print(" Valid login: PASS")
results.append(('Valid Login', True))
# 測試4: 取得當前用戶
print("\n4. Testing current user API...")
try:
me_response = requests.get(f'{base_url}/api/v1/auth/me',
cookies=response.cookies, timeout=5)
if me_response.status_code == 200:
me_result = me_response.json()
if me_result.get('success'):
print(" Get current user: PASS")
results.append(('Get Current User', True))
else:
print(" Get current user: FAIL (invalid response)")
results.append(('Get Current User', False))
else:
print(f" Get current user: FAIL ({me_response.status_code})")
results.append(('Get Current User', False))
except Exception as e:
print(f" Get current user: FAIL - {e}")
results.append(('Get Current User', False))
else:
print(f" Valid login: FAIL - {result.get('message', 'Unknown error')}")
results.append(('Valid Login', False))
else:
print(f" Valid login: FAIL ({response.status_code})")
try:
error_info = response.json()
print(f" Error: {error_info.get('message', 'Unknown error')}")
except:
print(f" Response: {response.text}")
results.append(('Valid Login', False))
except Exception as e:
print(f" Valid login test: FAIL - {e}")
results.append(('Valid Login', False))
# 結果總結
print("\n=== Test Summary ===")
passed = 0
for test_name, success in results:
status = "PASS" if success else "FAIL"
print(f"{test_name}: {status}")
if success:
passed += 1
print(f"\nOverall: {passed}/{len(results)} tests passed")
if passed == len(results):
print("Status: All API tests passed!")
elif passed > len(results) // 2:
print("Status: Most API tests passed, some issues to investigate")
else:
print("Status: Significant API issues detected")
return results
def check_server_running():
"""檢查服務器是否運行"""
try:
response = requests.get('http://127.0.0.1:5000/health', timeout=2)
return response.status_code == 200
except:
return False
if __name__ == '__main__':
if not check_server_running():
print("Flask server is not running on port 5000")
print("Please start the server manually or run the full test with API server startup")
exit(1)
test_api_endpoints()