72 lines
2.4 KiB
Python
72 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
測試 LDAP API 端點功能
|
|
"""
|
|
import requests
|
|
import json
|
|
|
|
def test_api_search():
|
|
"""測試 API 搜尋功能"""
|
|
print("=== 測試 LDAP API 搜尋功能 ===")
|
|
|
|
# 測試不同的搜尋詞
|
|
test_terms = ["liu", "劉", "PE", "管理", "admin"]
|
|
|
|
base_url = "http://127.0.0.1:5000"
|
|
|
|
# 先登入獲取 session cookie
|
|
session = requests.Session()
|
|
|
|
print("正在登入系統...")
|
|
login_data = {
|
|
'username': 'ymirliu@panjit.com.tw',
|
|
'password': input("請輸入 ymirliu@panjit.com.tw 的密碼: ")
|
|
}
|
|
|
|
# 嘗試登入
|
|
login_response = session.post(f"{base_url}/login", data=login_data)
|
|
|
|
if login_response.status_code == 200 and "總表檢視" in login_response.text:
|
|
print("✅ 登入成功")
|
|
|
|
for term in test_terms:
|
|
print(f"\n🔍 測試搜尋: '{term}'")
|
|
print("-" * 40)
|
|
|
|
api_url = f"{base_url}/api/ldap-search"
|
|
params = {'q': term}
|
|
|
|
try:
|
|
response = session.get(api_url, params=params)
|
|
print(f"HTTP 狀態: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
try:
|
|
data = response.json()
|
|
print(f"找到 {len(data)} 個結果:")
|
|
|
|
for i, result in enumerate(data, 1):
|
|
print(f" {i}. {result.get('text', 'N/A')}")
|
|
print(f" 值: {result.get('value', 'N/A')}")
|
|
print(f" 類型: {result.get('type', 'N/A')}")
|
|
|
|
except json.JSONDecodeError:
|
|
print("❌ 回應不是有效的 JSON")
|
|
print(f"回應內容: {response.text[:200]}")
|
|
else:
|
|
print(f"❌ API 請求失敗: {response.status_code}")
|
|
print(f"回應: {response.text[:200]}")
|
|
|
|
except requests.RequestException as e:
|
|
print(f"❌ 請求錯誤: {e}")
|
|
else:
|
|
print("❌ 登入失敗")
|
|
print(f"HTTP 狀態: {login_response.status_code}")
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
test_api_search()
|
|
except KeyboardInterrupt:
|
|
print("\n\n測試已中斷")
|
|
except Exception as e:
|
|
print(f"\n測試發生錯誤: {e}") |