113 lines
3.4 KiB
Python
113 lines
3.4 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
測試 LDAP 搜尋功能的獨立腳本
|
|
用於偵錯郵件通知對象搜尋問題
|
|
"""
|
|
|
|
from ldap_utils import search_ldap_principals, search_ldap_groups
|
|
from app import app
|
|
import sys
|
|
|
|
def test_user_search():
|
|
"""測試使用者搜尋功能"""
|
|
print("=== 測試使用者搜尋功能 ===")
|
|
|
|
test_terms = ["劉", "liu", "管理", "admin", "工程"]
|
|
|
|
for term in test_terms:
|
|
print(f"\n搜尋詞: '{term}'")
|
|
print("-" * 40)
|
|
|
|
try:
|
|
results = search_ldap_principals(term, limit=10)
|
|
print(f"找到 {len(results)} 個結果:")
|
|
|
|
for i, result in enumerate(results, 1):
|
|
print(f"{i}. {result['name']} ({result['email']})")
|
|
|
|
except Exception as e:
|
|
print(f"搜尋失敗: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
def test_group_search():
|
|
"""測試群組搜尋功能"""
|
|
print("\n=== 測試群組搜尋功能 ===")
|
|
|
|
test_terms = ["管理", "工程", "admin", "group"]
|
|
|
|
for term in test_terms:
|
|
print(f"\n搜尋詞: '{term}'")
|
|
print("-" * 40)
|
|
|
|
try:
|
|
results = search_ldap_groups(term, limit=10)
|
|
print(f"找到 {len(results)} 個群組:")
|
|
|
|
for i, result in enumerate(results, 1):
|
|
print(f"{i}. {result['name']} (成員數: {result['member_count']})")
|
|
|
|
except Exception as e:
|
|
print(f"群組搜尋失敗: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
|
|
def test_interactive_search():
|
|
"""互動式搜尋測試"""
|
|
print("\n=== 互動式搜尋測試 ===")
|
|
|
|
while True:
|
|
search_term = input("\n請輸入搜尋詞 (或輸入 'quit' 結束): ").strip()
|
|
|
|
if search_term.lower() == 'quit':
|
|
break
|
|
|
|
if not search_term:
|
|
continue
|
|
|
|
print(f"\n搜尋 '{search_term}'...")
|
|
|
|
# 搜尋使用者
|
|
try:
|
|
user_results = search_ldap_principals(search_term, limit=10)
|
|
print(f"\n👤 使用者結果 ({len(user_results)}):")
|
|
for i, result in enumerate(user_results, 1):
|
|
print(f" {i}. {result['name']} ({result['email']})")
|
|
except Exception as e:
|
|
print(f"使用者搜尋失敗: {e}")
|
|
|
|
# 搜尋群組
|
|
try:
|
|
group_results = search_ldap_groups(search_term, limit=5)
|
|
print(f"\n👥 群組結果 ({len(group_results)}):")
|
|
for i, result in enumerate(group_results, 1):
|
|
print(f" {i}. {result['name']} (成員: {result['member_count']})")
|
|
except Exception as e:
|
|
print(f"群組搜尋失敗: {e}")
|
|
|
|
def main():
|
|
"""主測試函式"""
|
|
print("LDAP 搜尋功能測試工具")
|
|
print("=" * 50)
|
|
|
|
with app.app_context():
|
|
# 測試預設搜尋詞
|
|
test_user_search()
|
|
test_group_search()
|
|
|
|
# 互動式測試
|
|
choice = input("\n是否要進行互動式搜尋測試? (y/N): ").strip().lower()
|
|
if choice == 'y':
|
|
test_interactive_search()
|
|
|
|
print("\n測試完成!")
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except KeyboardInterrupt:
|
|
print("\n\n測試已中斷")
|
|
except Exception as e:
|
|
print(f"\n測試發生錯誤: {e}")
|
|
import traceback
|
|
traceback.print_exc() |