Skip to content

Commit

Permalink
Reordered parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
acasajus committed Sep 26, 2024
1 parent 2a7ffd5 commit cf6d74d
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 17 deletions.
2 changes: 1 addition & 1 deletion app/contact_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ def __update_contact_if_needed(

def create_contact(
email: str,
name: Optional[str],
alias: Alias,
name: Optional[str] = None,
mail_from: Optional[str] = None,
allow_empty_email: bool = False,
automatic_created: bool = False,
Expand Down
4 changes: 2 additions & 2 deletions email_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,8 @@ def get_or_create_contact(from_header: str, mail_from: str, alias: Alias) -> Con
contact_email = mail_from
contact_result = contact_utils.create_contact(
email=contact_email,
name=contact_name,
alias=alias,
name=contact_name,
mail_from=mail_from,
allow_empty_email=True,
automatic_created=True,
Expand Down Expand Up @@ -229,7 +229,7 @@ def get_or_create_reply_to_contact(
)
return None

return contact_utils.create_contact(contact_address, contact_name, alias).contact
return contact_utils.create_contact(contact_address, alias, contact_name).contact


def replace_header_when_forward(msg: Message, alias: Alias, header: str):
Expand Down
40 changes: 26 additions & 14 deletions tests/test_contact_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,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,
Expand All @@ -68,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

Expand All @@ -77,7 +77,7 @@ 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 == ""
Expand All @@ -90,7 +90,7 @@ def test_create_contact_name_overrides_email_name():
Session.commit()
email = random_email()
name = random_token()
contact_result = create_contact(f"superseeded <{email}>", name, alias)
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
Expand All @@ -103,46 +103,58 @@ def test_create_contact_name_taken_from_email():
Session.commit()
email = random_email()
name = random_token()
contact_result = create_contact(f"{name} <{email}>", None, alias)
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)
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)
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)
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

Expand All @@ -152,13 +164,13 @@ 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 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
Expand All @@ -170,14 +182,14 @@ 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
Expand Down

0 comments on commit cf6d74d

Please sign in to comment.