lead-qualification / test_email_system.py
sksameermujahid's picture
Upload 19 files
c061318 verified
#!/usr/bin/env python3
"""
Test Email System
Independent testing of email functionality
"""
import os
import sys
import time
import logging
import requests
from datetime import datetime
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def test_email_automation_service():
"""Test the email automation service"""
logger.info("πŸ§ͺ Testing Email Automation Service...")
base_url = "http://localhost:5001"
# Test health check
try:
response = requests.get(f"{base_url}/api/email/health", timeout=10)
if response.status_code == 200:
logger.info("βœ… Email automation service is running")
else:
logger.error(f"❌ Email automation service health check failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ Cannot connect to email automation service: {e}")
return False
# Test email sending
try:
response = requests.post(f"{base_url}/api/email/test", timeout=30)
if response.status_code == 200:
result = response.json()
if result.get('success'):
logger.info("βœ… Test email sent successfully")
logger.info(f"πŸ“§ Recipient: {result.get('recipient')}")
logger.info(f"πŸ“§ Subject: {result.get('subject')}")
return True
else:
logger.error(f"❌ Test email failed: {result.get('error')}")
return False
else:
logger.error(f"❌ Test email request failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ Test email request failed: {e}")
return False
def test_automated_email():
"""Test automated email generation"""
logger.info("πŸ§ͺ Testing Automated Email Generation...")
base_url = "http://localhost:5001"
# Test automated email for customer 105
test_data = {
'customer_id': 105,
'email_type': 'behavioral_trigger',
'recipient_email': 'sameermujahid7777@gmail.com'
}
try:
response = requests.post(f"{base_url}/api/email/automated",
json=test_data, timeout=60)
if response.status_code == 200:
result = response.json()
if result.get('success'):
logger.info("βœ… Automated email sent successfully")
logger.info(f"πŸ“§ Customer ID: {result.get('customer_id')}")
logger.info(f"πŸ“§ Email Type: {result.get('email_type')}")
logger.info(f"πŸ“§ Subject: {result.get('subject')}")
return True
else:
logger.error(f"❌ Automated email failed: {result.get('error')}")
return False
else:
logger.error(f"❌ Automated email request failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ Automated email request failed: {e}")
return False
def test_api_service():
"""Test the main API service"""
logger.info("πŸ§ͺ Testing Main API Service...")
base_url = "http://localhost:5000"
# Test health check
try:
response = requests.get(f"{base_url}/api/health", timeout=10)
if response.status_code == 200:
logger.info("βœ… Main API service is running")
return True
else:
logger.error(f"❌ Main API service health check failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ Cannot connect to main API service: {e}")
return False
def test_customer_analysis():
"""Test customer analysis functionality"""
logger.info("πŸ§ͺ Testing Customer Analysis...")
base_url = "http://localhost:5000"
# Test customer 105 analysis
try:
response = requests.get(f"{base_url}/api/customer/105", timeout=30)
if response.status_code == 200:
result = response.json()
if result.get('success'):
logger.info("βœ… Customer analysis successful")
lead_data = result.get('data', {}).get('lead_qualification', {})
logger.info(f"πŸ“Š Lead Status: {lead_data.get('lead_status')}")
logger.info(f"πŸ“Š Lead Score: {lead_data.get('lead_score')}")
return True
else:
logger.error(f"❌ Customer analysis failed: {result.get('error')}")
return False
else:
logger.error(f"❌ Customer analysis request failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ Customer analysis request failed: {e}")
return False
def test_ai_analysis():
"""Test AI analysis functionality"""
logger.info("πŸ§ͺ Testing AI Analysis...")
base_url = "http://localhost:5000"
# Test AI analysis for customer 105
try:
response = requests.get(f"{base_url}/api/ai-customer/105", timeout=60)
if response.status_code == 200:
result = response.json()
if result.get('success'):
logger.info("βœ… AI analysis successful")
ai_insights = result.get('data', {}).get('ai_insights', {})
logger.info(f"🧠 Personality Type: {ai_insights.get('ai_personality_type')}")
logger.info(f"🧠 Buying Motivation: {ai_insights.get('buying_motivation')}")
return True
else:
logger.error(f"❌ AI analysis failed: {result.get('error')}")
return False
else:
logger.error(f"❌ AI analysis request failed: {response.status_code}")
return False
except Exception as e:
logger.error(f"❌ AI analysis request failed: {e}")
return False
def main():
"""Main test function"""
logger.info("=" * 80)
logger.info("πŸ§ͺ AI Lead Analysis System - Email Testing Suite")
logger.info("=" * 80)
logger.info(f"πŸ“… Test Time: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
logger.info("")
# Test results
tests = {
'API Service': test_api_service,
'Customer Analysis': test_customer_analysis,
'AI Analysis': test_ai_analysis,
'Email Automation Service': test_email_automation_service,
'Test Email': test_email_automation_service,
'Automated Email': test_automated_email
}
results = {}
for test_name, test_func in tests.items():
logger.info(f"πŸ” Running {test_name} test...")
try:
result = test_func()
results[test_name] = result
if result:
logger.info(f"βœ… {test_name} test PASSED")
else:
logger.error(f"❌ {test_name} test FAILED")
except Exception as e:
logger.error(f"❌ {test_name} test ERROR: {e}")
results[test_name] = False
logger.info("")
# Summary
logger.info("=" * 80)
logger.info("πŸ“Š TEST SUMMARY")
logger.info("=" * 80)
passed = sum(1 for result in results.values() if result)
total = len(results)
for test_name, result in results.items():
status = "βœ… PASSED" if result else "❌ FAILED"
logger.info(f"{test_name}: {status}")
logger.info("")
logger.info(f"πŸ“ˆ Overall Result: {passed}/{total} tests passed")
if passed == total:
logger.info("πŸŽ‰ All tests passed! Email system is working correctly.")
else:
logger.warning("⚠️ Some tests failed. Please check the logs above.")
logger.info("=" * 80)
return passed == total
if __name__ == "__main__":
try:
success = main()
sys.exit(0 if success else 1)
except KeyboardInterrupt:
logger.info("πŸ›‘ Testing interrupted by user")
sys.exit(1)
except Exception as e:
logger.error(f"❌ Testing failed: {e}")
sys.exit(1)