test_custom_alias.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from flask import url_for
  2. from app.config import EMAIL_DOMAIN
  3. from app.dashboard.views.custom_alias import (
  4. signer,
  5. verify_prefix_suffix,
  6. available_suffixes,
  7. )
  8. from app.extensions import db
  9. from app.models import Mailbox, CustomDomain, Alias
  10. from app.utils import random_word
  11. from tests.utils import login
  12. def test_add_alias_success(flask_client):
  13. user = login(flask_client)
  14. db.session.commit()
  15. word = random_word()
  16. suffix = f".{word}@{EMAIL_DOMAIN}"
  17. suffix = signer.sign(suffix).decode()
  18. # create with a single mailbox
  19. r = flask_client.post(
  20. url_for("dashboard.custom_alias"),
  21. data={
  22. "prefix": "prefix",
  23. "suffix": suffix,
  24. "mailboxes": [user.default_mailbox_id],
  25. },
  26. follow_redirects=True,
  27. )
  28. assert r.status_code == 200
  29. assert f"Alias prefix.{word}@{EMAIL_DOMAIN} has been created" in str(r.data)
  30. alias = Alias.query.order_by(Alias.created_at.desc()).first()
  31. assert not alias._mailboxes
  32. def test_add_alias_multiple_mailboxes(flask_client):
  33. user = login(flask_client)
  34. db.session.commit()
  35. word = random_word()
  36. suffix = f".{word}@{EMAIL_DOMAIN}"
  37. suffix = signer.sign(suffix).decode()
  38. # create with a multiple mailboxes
  39. mb1 = Mailbox.create(user_id=user.id, email="m1@example.com", verified=True)
  40. db.session.commit()
  41. r = flask_client.post(
  42. url_for("dashboard.custom_alias"),
  43. data={
  44. "prefix": "prefix",
  45. "suffix": suffix,
  46. "mailboxes": [user.default_mailbox_id, mb1.id],
  47. },
  48. follow_redirects=True,
  49. )
  50. assert r.status_code == 200
  51. assert f"Alias prefix.{word}@{EMAIL_DOMAIN} has been created" in str(r.data)
  52. alias = Alias.query.order_by(Alias.created_at.desc()).first()
  53. assert alias._mailboxes
  54. def test_not_show_unverified_mailbox(flask_client):
  55. """make sure user unverified mailbox is not shown to user"""
  56. user = login(flask_client)
  57. db.session.commit()
  58. Mailbox.create(user_id=user.id, email="m1@example.com", verified=True)
  59. Mailbox.create(user_id=user.id, email="m2@example.com", verified=False)
  60. db.session.commit()
  61. r = flask_client.get(url_for("dashboard.custom_alias"))
  62. assert "m1@example.com" in str(r.data)
  63. assert "m2@example.com" not in str(r.data)
  64. def test_verify_prefix_suffix(flask_client):
  65. user = login(flask_client)
  66. db.session.commit()
  67. CustomDomain.create(user_id=user.id, domain="test.com", verified=True)
  68. assert verify_prefix_suffix(user, "prefix", "@test.com")
  69. assert not verify_prefix_suffix(user, "prefix", "@abcd.com")
  70. word = random_word()
  71. suffix = f".{word}@{EMAIL_DOMAIN}"
  72. assert verify_prefix_suffix(user, "prefix", suffix)
  73. def test_available_suffixes(flask_client):
  74. user = login(flask_client)
  75. db.session.commit()
  76. CustomDomain.create(user_id=user.id, domain="test.com", verified=True)
  77. assert len(available_suffixes(user)) > 0
  78. # first suffix is custom domain
  79. first_suffix = available_suffixes(user)[0]
  80. assert first_suffix[0]
  81. assert first_suffix[1] == "@test.com"
  82. assert first_suffix[2].startswith("@test.com")