test_email_utils.py 2.0 KB

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