test_email_utils.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from email.message import EmailMessage
  2. from app.email_utils import (
  3. get_email_domain_part,
  4. email_belongs_to_alias_domains,
  5. can_be_used_as_personal_email,
  6. delete_header,
  7. add_or_replace_header,
  8. )
  9. from app.extensions import db
  10. from app.models import User, CustomDomain
  11. def test_get_email_domain_part():
  12. assert get_email_domain_part("ab@cd.com") == "cd.com"
  13. def test_email_belongs_to_alias_domains():
  14. # default alias domain
  15. assert email_belongs_to_alias_domains("ab@sl.local")
  16. assert not email_belongs_to_alias_domains("ab@not-exist.local")
  17. assert email_belongs_to_alias_domains("hey@d1.test")
  18. assert not email_belongs_to_alias_domains("hey@d3.test")
  19. def test_can_be_used_as_personal_email(flask_client):
  20. # default alias domain
  21. assert not can_be_used_as_personal_email("ab@sl.local")
  22. assert not can_be_used_as_personal_email("hey@d1.test")
  23. assert can_be_used_as_personal_email("hey@ab.cd")
  24. # custom domain
  25. user = User.create(
  26. email="a@b.c", password="password", name="Test User", activated=True
  27. )
  28. db.session.commit()
  29. CustomDomain.create(user_id=user.id, domain="ab.cd", verified=True)
  30. db.session.commit()
  31. assert not can_be_used_as_personal_email("hey@ab.cd")
  32. def test_delete_header():
  33. msg = EmailMessage()
  34. assert msg._headers == []
  35. msg["H"] = "abcd"
  36. msg["H"] = "xyzt"
  37. assert msg._headers == [("H", "abcd"), ("H", "xyzt")]
  38. delete_header(msg, "H")
  39. assert msg._headers == []
  40. def test_add_or_replace_header():
  41. msg = EmailMessage()
  42. msg["H"] = "abcd"
  43. msg["H"] = "xyzt"
  44. assert msg._headers == [("H", "abcd"), ("H", "xyzt")]
  45. add_or_replace_header(msg, "H", "new")
  46. assert msg._headers == [("H", "new")]