test_email_utils.py 2.4 KB

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