Files
TEMP_spec_system_V3/test_ldap_search.py
beabigegg 4f7f46b07a 2ND
2025-08-28 08:59:46 +08:00

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()