test_models.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from uuid import UUID
  2. import arrow
  3. import pytest
  4. from app.config import EMAIL_DOMAIN, MAX_NB_EMAIL_FREE_PLAN
  5. from app.extensions import db
  6. from app.models import generate_email, User, GenEmail
  7. def test_generate_email(flask_client):
  8. email = generate_email()
  9. assert email.endswith("@" + EMAIL_DOMAIN)
  10. with pytest.raises(ValueError):
  11. UUID(email.split("@")[0], version=4)
  12. email_uuid = generate_email(scheme=2)
  13. assert UUID(email_uuid.split("@")[0], version=4)
  14. def test_profile_picture_url(flask_client):
  15. user = User.create(
  16. email="a@b.c", password="password", name="Test User", activated=True
  17. )
  18. db.session.commit()
  19. assert user.profile_picture_url() == "http://sl.test/static/default-avatar.png"
  20. def test_suggested_emails_for_user_who_cannot_create_new_alias(flask_client):
  21. # make sure user is not in trial
  22. user = User.create(
  23. email="a@b.c",
  24. password="password",
  25. name="Test User",
  26. activated=True,
  27. trial_end=None,
  28. )
  29. db.session.commit()
  30. # make sure user runs out of quota to create new email
  31. for i in range(MAX_NB_EMAIL_FREE_PLAN):
  32. GenEmail.create_new(user_id=user.id, prefix="test")
  33. db.session.commit()
  34. suggested_email, other_emails = user.suggested_emails(website_name="test")
  35. # the suggested email is chosen from existing GenEmail
  36. assert GenEmail.get_by(email=suggested_email)
  37. # all other emails are generated emails
  38. for email in other_emails:
  39. assert GenEmail.get_by(email=email)
  40. def test_gen_email_create_random(flask_client):
  41. user = User.create(
  42. email="a@b.c", password="password", name="Test User", activated=True
  43. )
  44. db.session.commit()
  45. alias = GenEmail.create_new_random(user)
  46. assert alias.email.endswith(EMAIL_DOMAIN)