teszt állományok áthelyezése és szelektálása
This commit is contained in:
121
tests/active/test_email.py
Normal file
121
tests/active/test_email.py
Normal file
@@ -0,0 +1,121 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Test Email Script — Service Finder
|
||||
====================================
|
||||
Tests the EmailManager by sending a test email using the configured provider.
|
||||
Reads all settings from .env automatically via the app's Settings class.
|
||||
|
||||
Usage:
|
||||
# Test with configured provider (Brevo API / SMTP):
|
||||
docker compose exec sf_api python3 /app/test_email.py
|
||||
|
||||
# Test with local Mailpit (no real email sent, no TLS needed):
|
||||
docker compose exec sf_api /bin/sh -c " \
|
||||
SMTP_HOST=sf_mailpit SMTP_PORT=1025 SMTP_USER= SMTP_PASSWORD= \
|
||||
EMAIL_PROVIDER=smtp TEST_RECIPIENT=kincses@gmail.com \
|
||||
python3 /app/test_email.py"
|
||||
|
||||
# Test with Brevo API directly:
|
||||
docker compose exec sf_api /bin/sh -c " \
|
||||
EMAIL_PROVIDER=brevo_api TEST_RECIPIENT=kincses@gmail.com \
|
||||
python3 /app/test_email.py"
|
||||
|
||||
Environment check:
|
||||
- EMAIL_PROVIDER=smtp → uses SMTP
|
||||
- EMAIL_PROVIDER=brevo_smtp → uses Brevo SMTP relay
|
||||
- EMAIL_PROVIDER=brevo_api → uses Brevo REST API
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import asyncio
|
||||
import logging
|
||||
|
||||
# Ensure the backend package is importable
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# ── Load .env but do NOT override already-set env vars ──
|
||||
from dotenv import load_dotenv
|
||||
env_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), '.env')
|
||||
load_dotenv(env_path, override=False) # override=False = respect existing env vars
|
||||
|
||||
# ── Logging setup ──
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s [%(name)s] %(levelname)s: %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S',
|
||||
)
|
||||
logger = logging.getLogger("TestEmail")
|
||||
|
||||
async def main():
|
||||
"""Send a test email and report the result."""
|
||||
print("=" * 70)
|
||||
print(" SERVICE FINDER — EMAIL TEST SCRIPT")
|
||||
print("=" * 70)
|
||||
|
||||
# ── 1. Show current email configuration ──
|
||||
provider = os.getenv("EMAIL_PROVIDER", "smtp")
|
||||
print(f"\n📧 Current EMAIL_PROVIDER: {provider}")
|
||||
print(f" SMTP_HOST: {os.getenv('SMTP_HOST', '(not set)')}")
|
||||
print(f" SMTP_PORT: {os.getenv('SMTP_PORT', '(not set)')}")
|
||||
print(f" SMTP_USER: {os.getenv('SMTP_USER', '(not set)')}")
|
||||
print(f" MAIL_FROM: {os.getenv('MAIL_FROM', '(not set)')}")
|
||||
print(f" MAIL_FROM_NAME: {os.getenv('MAIL_FROM_NAME', '(not set)')}")
|
||||
|
||||
# Brevo-specific checks
|
||||
brevo_api_key = os.getenv("BREVO_API_KEY")
|
||||
brevo_smtp_user = os.getenv("BREVO_SMTP_USER")
|
||||
brevo_smtp_pass = os.getenv("BREVO_SMTP_PASSWORD")
|
||||
if provider == "brevo_api":
|
||||
print(f" BREVO_API_KEY: {'✅ Set' if brevo_api_key else '❌ NOT SET'}")
|
||||
elif provider == "brevo_smtp":
|
||||
print(f" BREVO_SMTP_USER: {'✅ Set' if brevo_smtp_user else '❌ NOT SET'}")
|
||||
print(f" BREVO_SMTP_PASSWORD: {'✅ Set' if brevo_smtp_pass else '❌ NOT SET'}")
|
||||
|
||||
# ── 2. Recipient ──
|
||||
recipient = os.getenv("TEST_RECIPIENT") or os.getenv("INITIAL_ADMIN_EMAIL") or "kincses@valami.hu"
|
||||
print(f"\n📨 Test recipient: {recipient}")
|
||||
|
||||
# ── 3. Import and send ──
|
||||
print("\n⏳ Sending test email...\n")
|
||||
|
||||
try:
|
||||
from app.services.email_manager import EmailManager
|
||||
|
||||
result = await EmailManager.send_email(
|
||||
recipient=recipient,
|
||||
template_key="test",
|
||||
variables={
|
||||
"first_name": "Teszt",
|
||||
"link": "https://dev.servicefinder.hu/dashboard",
|
||||
},
|
||||
lang="hu",
|
||||
)
|
||||
|
||||
print(f"\n{'=' * 70}")
|
||||
print(f" 📬 EMAIL RESULT")
|
||||
print(f"{'=' * 70}")
|
||||
print(f" Status: {result.get('status', 'unknown')}")
|
||||
print(f" Provider: {result.get('provider', 'unknown')}")
|
||||
if result.get('message_id'):
|
||||
print(f" MessageID: {result['message_id']}")
|
||||
if result.get('message'):
|
||||
print(f" Message: {result['message']}")
|
||||
print(f"{'=' * 70}\n")
|
||||
|
||||
if result.get("status") == "success":
|
||||
print("✅ TEST PASSED — Email sent successfully!")
|
||||
return 0
|
||||
else:
|
||||
print(f"❌ TEST FAILED — {result.get('message', 'Unknown error')}")
|
||||
return 1
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ CRITICAL ERROR: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
exit_code = asyncio.run(main())
|
||||
sys.exit(exit_code)
|
||||
Reference in New Issue
Block a user