Spaces:
Sleeping
Sleeping
| #!/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) |