console_mock.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import logging
  2. from typing import Optional
  3. from core.base import EmailProvider
  4. logger = logging.getLogger()
  5. class ConsoleMockEmailProvider(EmailProvider):
  6. """A simple email provider that logs emails to console, useful for
  7. testing."""
  8. async def send_email(
  9. self,
  10. to_email: str,
  11. subject: str,
  12. body: str,
  13. html_body: Optional[str] = None,
  14. *args,
  15. **kwargs,
  16. ) -> None:
  17. logger.info(f"""
  18. -------- Email Message --------
  19. To: {to_email}
  20. Subject: {subject}
  21. Body:
  22. {body}
  23. -----------------------------
  24. """)
  25. async def send_verification_email(
  26. self, to_email: str, verification_code: str, *args, **kwargs
  27. ) -> None:
  28. logger.info(f"""
  29. -------- Email Message --------
  30. To: {to_email}
  31. Subject: Please verify your email address
  32. Body:
  33. Verification code: {verification_code}
  34. -----------------------------
  35. """)
  36. async def send_password_reset_email(
  37. self, to_email: str, reset_token: str, *args, **kwargs
  38. ) -> None:
  39. logger.info(f"""
  40. -------- Email Message --------
  41. To: {to_email}
  42. Subject: Password Reset Request
  43. Body:
  44. Reset token: {reset_token}
  45. -----------------------------
  46. """)
  47. async def send_password_changed_email(
  48. self, to_email: str, *args, **kwargs
  49. ) -> None:
  50. logger.info(f"""
  51. -------- Email Message --------
  52. To: {to_email}
  53. Subject: Your Password Has Been Changed
  54. Body:
  55. Your password has been successfully changed.
  56. For security reasons, you will need to log in again on all your devices.
  57. -----------------------------
  58. """)