test_cookbook.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import sys
  2. from textwrap import dedent
  3. from redmail import EmailSender
  4. from convert import remove_email_content_id, prune_generated_headers
  5. IS_PY37 = sys.version_info < (3, 8)
  6. def test_distributions():
  7. class DistrSender(EmailSender):
  8. "Send email using pre-defined distribution lists"
  9. def __init__(self, *args, distribution:dict, **kwargs):
  10. super().__init__(*args, **kwargs)
  11. self.distributions = distribution
  12. def get_receivers(self, receiver_list):
  13. if receiver_list:
  14. return self.distributions[receiver_list]
  15. def get_cc(self, receiver_list):
  16. if receiver_list:
  17. return self.distributions[receiver_list]
  18. def get_bcc(self, receiver_list):
  19. if receiver_list:
  20. return self.distributions[receiver_list]
  21. email = DistrSender(
  22. host="localhost",
  23. port=0,
  24. distribution={
  25. 'group1': ["me@example.com", "you@example.com"],
  26. 'group2': ["he@example.com", "she@example.com"],
  27. }
  28. )
  29. if IS_PY37:
  30. # CI has FQDN that has UTF-8 chars and goes to new line
  31. # for Python <=3.7. We set a realistic looking domain
  32. # name for easier testing
  33. email.domain = "REDMAIL-1234.mail.com"
  34. msg = email.get_message(
  35. sender="me@example.com",
  36. receivers="group1",
  37. cc="group2",
  38. subject="Some email",
  39. )
  40. msg = prune_generated_headers(str(msg))
  41. msg = remove_email_content_id(str(msg))
  42. assert msg == dedent("""
  43. From: me@example.com
  44. Subject: Some email
  45. To: me@example.com, you@example.com
  46. Cc: he@example.com, she@example.com
  47. Message-ID: <<message_id>>
  48. Date: <date>
  49. """)[1:].replace('\n', '\r\n')