4.51.0
All checks were successful
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 3m30s
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 3m31s
Build-Release-Image / Merge-Images (push) Successful in 11s
Build-Release-Image / Create-Release (push) Successful in 9s
Build-Release-Image / Notify (push) Successful in 2s
All checks were successful
Build-Release-Image / Build-Image (linux/arm64) (push) Successful in 3m30s
Build-Release-Image / Build-Image (linux/amd64) (push) Successful in 3m31s
Build-Release-Image / Merge-Images (push) Successful in 11s
Build-Release-Image / Create-Release (push) Successful in 9s
Build-Release-Image / Notify (push) Successful in 2s
This commit is contained in:
117
app/tests/test_contact_utils.py
Normal file
117
app/tests/test_contact_utils.py
Normal file
@ -0,0 +1,117 @@
|
||||
from typing import Optional
|
||||
|
||||
import pytest
|
||||
from app.contact_utils import create_contact, ContactCreateError
|
||||
from app.db import Session
|
||||
from app.models import (
|
||||
Alias,
|
||||
Contact,
|
||||
)
|
||||
from tests.utils import create_new_user, random_email, random_token
|
||||
|
||||
|
||||
def create_provider():
|
||||
# name auto_created from_partner
|
||||
yield ["name", "a@b.c", True, True]
|
||||
yield [None, None, True, True]
|
||||
yield [None, None, False, True]
|
||||
yield [None, None, True, False]
|
||||
yield [None, None, False, False]
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"name, mail_from, automatic_created, from_partner", create_provider()
|
||||
)
|
||||
def test_create_contact(
|
||||
name: Optional[str],
|
||||
mail_from: Optional[str],
|
||||
automatic_created: bool,
|
||||
from_partner: bool,
|
||||
):
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(
|
||||
email,
|
||||
name,
|
||||
alias,
|
||||
mail_from=mail_from,
|
||||
automatic_created=automatic_created,
|
||||
from_partner=from_partner,
|
||||
)
|
||||
assert contact_result.error is None
|
||||
contact = contact_result.contact
|
||||
assert contact.user_id == user.id
|
||||
assert contact.alias_id == alias.id
|
||||
assert contact.website_email == email
|
||||
assert contact.name == name
|
||||
assert contact.mail_from == mail_from
|
||||
assert contact.automatic_created == automatic_created
|
||||
assert not contact.invalid_email
|
||||
expected_flags = Contact.FLAG_PARTNER_CREATED if from_partner else 0
|
||||
assert contact.flags == expected_flags
|
||||
|
||||
|
||||
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)
|
||||
assert contact_result.contact is None
|
||||
assert contact_result.error == ContactCreateError.InvalidEmail
|
||||
|
||||
|
||||
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)
|
||||
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_do_not_allow_invalid_email():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
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)
|
||||
assert contact_result.contact is None
|
||||
assert contact_result.error == ContactCreateError.InvalidEmail
|
||||
|
||||
|
||||
def test_update_name_for_existing():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(email, "", alias)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.name == ""
|
||||
name = random_token()
|
||||
contact_result = create_contact(email, name, alias)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.name == name
|
||||
|
||||
|
||||
def test_update_mail_from_for_existing():
|
||||
user = create_new_user()
|
||||
alias = Alias.create_new_random(user)
|
||||
Session.commit()
|
||||
email = random_email()
|
||||
contact_result = create_contact(email, "", alias)
|
||||
assert contact_result.error is 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)
|
||||
assert contact_result.error is None
|
||||
assert contact_result.contact is not None
|
||||
assert contact_result.contact.mail_from == mail_from
|
Reference in New Issue
Block a user