teszt állományok áthelyezése és szelektálása

This commit is contained in:
Roo
2026-06-05 10:50:25 +00:00
parent 18524a08f2
commit f03b5f3916
63 changed files with 633 additions and 527 deletions

121
tests/active/test_email.py Normal file
View 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)