4.52.0
All checks were successful
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 4m44s
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 4m31s
Build-Release-Image / Merge-Images (push) Successful in 23s
Build-Release-Image / Create-Release (push) Successful in 23s
Build-Release-Image / Notify (push) Successful in 17s
All checks were successful
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 4m44s
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 4m31s
Build-Release-Image / Merge-Images (push) Successful in 23s
Build-Release-Image / Create-Release (push) Successful in 23s
Build-Release-Image / Notify (push) Successful in 17s
This commit is contained in:
@ -536,7 +536,7 @@ def test_create_contact_route_free_users(flask_client):
|
||||
assert r.status_code == 201
|
||||
|
||||
# End trial and disallow for new free users. Config should allow it
|
||||
user.flags = User.FLAG_FREE_DISABLE_CREATE_ALIAS
|
||||
user.flags = User.FLAG_DISABLE_CREATE_CONTACTS
|
||||
Session.commit()
|
||||
r = flask_client.post(
|
||||
url_for("api.create_contact_route", alias_id=alias.id),
|
||||
|
@ -4,7 +4,7 @@ from app.models import (
|
||||
Alias,
|
||||
Contact,
|
||||
)
|
||||
from tests.utils import login
|
||||
from tests.utils import login, random_email
|
||||
|
||||
|
||||
def test_add_contact_success(flask_client):
|
||||
@ -13,26 +13,28 @@ def test_add_contact_success(flask_client):
|
||||
|
||||
assert Contact.filter_by(user_id=user.id).count() == 0
|
||||
|
||||
email = random_email()
|
||||
# <<< Create a new contact >>>
|
||||
flask_client.post(
|
||||
url_for("dashboard.alias_contact_manager", alias_id=alias.id),
|
||||
data={
|
||||
"form-name": "create",
|
||||
"email": "abcd@gmail.com",
|
||||
"email": email,
|
||||
},
|
||||
follow_redirects=True,
|
||||
)
|
||||
# a new contact is added
|
||||
assert Contact.filter_by(user_id=user.id).count() == 1
|
||||
contact = Contact.filter_by(user_id=user.id).first()
|
||||
assert contact.website_email == "abcd@gmail.com"
|
||||
assert contact.website_email == email
|
||||
|
||||
# <<< Create a new contact using a full email format >>>
|
||||
email = random_email()
|
||||
flask_client.post(
|
||||
url_for("dashboard.alias_contact_manager", alias_id=alias.id),
|
||||
data={
|
||||
"form-name": "create",
|
||||
"email": "First Last <another@gmail.com>",
|
||||
"email": f"First Last <{email}>",
|
||||
},
|
||||
follow_redirects=True,
|
||||
)
|
||||
@ -41,7 +43,7 @@ def test_add_contact_success(flask_client):
|
||||
contact = (
|
||||
Contact.filter_by(user_id=user.id).filter(Contact.id != contact.id).first()
|
||||
)
|
||||
assert contact.website_email == "another@gmail.com"
|
||||
assert contact.website_email == email
|
||||
assert contact.name == "First Last"
|
||||
|
||||
# <<< Create a new contact with invalid email address >>>
|
||||
|
@ -1,15 +1,26 @@
|
||||
from typing import Optional
|
||||
|
||||
import pytest
|
||||
|
||||
from app import config
|
||||
from app.contact_utils import create_contact, ContactCreateError
|
||||
from app.db import Session
|
||||
from app.models import (
|
||||
Alias,
|
||||
Contact,
|
||||
User,
|
||||
)
|
||||
from tests.utils import create_new_user, random_email, random_token
|
||||
|
||||
|
||||
def setup_module(module):
|
||||
config.DISABLE_CREATE_CONTACTS_FOR_FREE_USERS = True
|
||||
|
||||
|
||||
def teardown_module(module):
|
||||
config.DISABLE_CREATE_CONTACTS_FOR_FREE_USERS = False
|
||||
|
||||
|
||||
def create_provider():
|
||||
# name auto_created from_partner
|
||||
yield ["name", "a@b.c", True, True]
|
||||
@ -34,8 +45,8 @@ def test_create_contact(
|
||||
email = random_email()
|
||||
contact_result = create_contact(
|
||||
email,
|
||||
name,
|
||||
alias,
|
||||
name=name,
|
||||
mail_from=mail_from,
|
||||
automatic_created=automatic_created,
|
||||
from_partner=from_partner,
|
||||
@ -57,7 +68,7 @@ def test_create_contact_email_email_not_allowed():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
contact_result = create_contact("", "", alias)
|
||||
contact_result = create_contact("", alias)
|
||||
assert contact_result.contact is None
|
||||
assert contact_result.error == ContactCreateError.InvalidEmail
|
||||
|
||||
@ -66,21 +77,84 @@ def test_create_contact_email_email_allowed():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
contact_result = create_contact("", "", alias, allow_empty_email=True)
|
||||
contact_result = create_contact("", alias, allow_empty_email=True)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.website_email == ""
|
||||
assert contact_result.contact.invalid_email
|
||||
|
||||
|
||||
def test_create_contact_name_overrides_email_name():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
name = random_token()
|
||||
contact_result = create_contact(f"superseeded <{email}>", alias, name=name)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.website_email == email
|
||||
assert contact_result.contact.name == name
|
||||
|
||||
|
||||
def test_create_contact_name_taken_from_email():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
name = random_token()
|
||||
contact_result = create_contact(f"{name} <{email}>", alias)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.website_email == email
|
||||
assert contact_result.contact.name == name
|
||||
|
||||
|
||||
def test_create_contact_empty_name_is_none():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(email, alias, name="")
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.website_email == email
|
||||
assert contact_result.contact.name is None
|
||||
|
||||
|
||||
def test_create_contact_free_user():
|
||||
user = create_new_user()
|
||||
user.trial_end = None
|
||||
user.flags = 0
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.flush()
|
||||
# Free users without the FREE_DISABLE_CREATE_CONTACTS
|
||||
result = create_contact(random_email(), alias)
|
||||
assert result.error is None
|
||||
assert result.created
|
||||
assert result.contact is not None
|
||||
assert not result.contact.automatic_created
|
||||
# Free users with the flag should be able to still create automatic emails
|
||||
user.flags = User.FLAG_DISABLE_CREATE_CONTACTS
|
||||
Session.flush()
|
||||
result = create_contact(random_email(), alias, automatic_created=True)
|
||||
assert result.error is None
|
||||
assert result.created
|
||||
assert result.contact is not None
|
||||
assert result.contact.automatic_created
|
||||
# Free users with the flag cannot create non-automatic emails
|
||||
result = create_contact(random_email(), alias)
|
||||
assert result.error == ContactCreateError.NotAllowed
|
||||
|
||||
|
||||
def test_do_not_allow_invalid_email():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
contact_result = create_contact("potato", "", alias)
|
||||
contact_result = create_contact("potato", alias)
|
||||
assert contact_result.contact is None
|
||||
assert contact_result.error == ContactCreateError.InvalidEmail
|
||||
contact_result = create_contact("asdf\x00@gmail.com", "", alias)
|
||||
contact_result = create_contact("asdf\x00@gmail.com", alias)
|
||||
assert contact_result.contact is None
|
||||
assert contact_result.error == ContactCreateError.InvalidEmail
|
||||
|
||||
@ -90,13 +164,15 @@ def test_update_name_for_existing():
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(email, "", alias)
|
||||
contact_result = create_contact(email, alias)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.created
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.name == ""
|
||||
assert contact_result.contact.name is None
|
||||
name = random_token()
|
||||
contact_result = create_contact(email, name, alias)
|
||||
contact_result = create_contact(email, alias, name=name)
|
||||
assert contact_result.error is None
|
||||
assert not contact_result.created
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.name == name
|
||||
|
||||
@ -106,12 +182,15 @@ def test_update_mail_from_for_existing():
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(email, "", alias)
|
||||
contact_result = create_contact(email, alias)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.created
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.mail_from is None
|
||||
mail_from = random_email()
|
||||
contact_result = create_contact(email, "", alias, mail_from=mail_from)
|
||||
contact_result = create_contact(email, alias, mail_from=mail_from)
|
||||
assert contact_result.error is None
|
||||
assert not contact_result.created
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.mail_from == mail_from
|
||||
|
Reference in New Issue
Block a user