2ND
This commit is contained in:
113
test_ldap_search.py
Normal file
113
test_ldap_search.py
Normal file
@@ -0,0 +1,113 @@
|
||||
#!/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()
|
Reference in New Issue
Block a user