🗃️(models) add MailDomain, MailDomainAccess and Mailbox models
Additional app and models to handle email addresses creation in Desk.
This commit is contained in:
committed by
Marie
parent
a1f9cf0854
commit
cca6c77f00
0
src/backend/mailbox_manager/tests/__init__.py
Normal file
0
src/backend/mailbox_manager/tests/__init__.py
Normal file
91
src/backend/mailbox_manager/tests/test_models_mailboxes.py
Normal file
91
src/backend/mailbox_manager/tests/test_models_mailboxes.py
Normal file
@@ -0,0 +1,91 @@
|
||||
"""
|
||||
Unit tests for the mailbox model
|
||||
"""
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
import pytest
|
||||
|
||||
from mailbox_manager import factories
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
# LOCAL PART FIELD
|
||||
|
||||
|
||||
def test_models_mailboxes__local_part_cannot_be_empty():
|
||||
"""The "local_part" field should not be empty."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be blank"):
|
||||
factories.MailboxFactory(local_part="")
|
||||
|
||||
|
||||
def test_models_mailboxes__local_part_cannot_be_null():
|
||||
"""The "local_part" field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null"):
|
||||
factories.MailboxFactory(local_part=None)
|
||||
|
||||
|
||||
def test_models_mailboxes__local_part_matches_expected_format():
|
||||
"""
|
||||
The local part should contain alpha-numeric caracters
|
||||
and a limited set of special caracters ("+", "-", ".", "_").
|
||||
"""
|
||||
factories.MailboxFactory(local_part="Marie-Jose.Perec+JO_2024")
|
||||
|
||||
with pytest.raises(ValidationError, match="Enter a valid value"):
|
||||
factories.MailboxFactory(local_part="mariejo@unnecessarydomain.com")
|
||||
|
||||
with pytest.raises(ValidationError, match="Enter a valid value"):
|
||||
factories.MailboxFactory(local_part="!")
|
||||
|
||||
|
||||
def test_models_mailboxes__local_part_unique_per_domain():
|
||||
"""Local parts should be unique per domain."""
|
||||
|
||||
existing_mailbox = factories.MailboxFactory()
|
||||
|
||||
# same local part on another domain should not be a problem
|
||||
factories.MailboxFactory(local_part=existing_mailbox.local_part)
|
||||
|
||||
# same local part on the same domain should not be possible
|
||||
with pytest.raises(
|
||||
ValidationError, match="Mailbox with this Local_part and Domain already exists."
|
||||
):
|
||||
factories.MailboxFactory(
|
||||
local_part=existing_mailbox.local_part, domain=existing_mailbox.domain
|
||||
)
|
||||
|
||||
|
||||
# DOMAIN FIELD
|
||||
|
||||
|
||||
def test_models_mailboxes__domain_must_be_a_maildomain_instance():
|
||||
"""The "domain" field should be an instance of MailDomain."""
|
||||
expected_error = '"Mailbox.domain" must be a "MailDomain" instance.'
|
||||
with pytest.raises(ValueError, match=expected_error):
|
||||
factories.MailboxFactory(domain="")
|
||||
|
||||
with pytest.raises(ValueError, match=expected_error):
|
||||
factories.MailboxFactory(domain="domain-as-string.com")
|
||||
|
||||
|
||||
def test_models_mailboxes__domain_cannot_be_null():
|
||||
"""The "domain" field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null"):
|
||||
factories.MailboxFactory(domain=None)
|
||||
|
||||
|
||||
# SECONDARY_EMAIL FIELD
|
||||
|
||||
|
||||
def test_models_mailboxes__secondary_email_cannot_be_empty():
|
||||
"""The "secondary_email" field should not be empty."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be blank"):
|
||||
factories.MailboxFactory(secondary_email="")
|
||||
|
||||
|
||||
def test_models_mailboxes__secondary_email_cannot_be_null():
|
||||
"""The "secondary_email" field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null"):
|
||||
factories.MailboxFactory(secondary_email=None)
|
||||
26
src/backend/mailbox_manager/tests/test_models_maildomain.py
Normal file
26
src/backend/mailbox_manager/tests/test_models_maildomain.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
Unit tests for the MailDomain model
|
||||
"""
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
import pytest
|
||||
|
||||
from mailbox_manager import factories
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
|
||||
# NAME FIELD
|
||||
|
||||
|
||||
def test_models_mail_domain__domain_name_should_not_be_empty():
|
||||
"""The domain name field should not be empty."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be blank"):
|
||||
factories.MailDomainFactory(name="")
|
||||
|
||||
|
||||
def test_models_mail_domain__domain_name_should_not_be_null():
|
||||
"""The domain name field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null."):
|
||||
factories.MailDomainFactory(name=None)
|
||||
@@ -0,0 +1,60 @@
|
||||
"""
|
||||
Unit tests for the MailDomainAccess model
|
||||
"""
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
import pytest
|
||||
|
||||
from mailbox_manager import factories
|
||||
|
||||
pytestmark = pytest.mark.django_db
|
||||
|
||||
# USER FIELD
|
||||
|
||||
|
||||
def test_models_maildomainaccess__user_be_a_user_instance():
|
||||
"""The "user" field should be a user instance."""
|
||||
expected_error = '"MailDomainAccess.user" must be a "User" instance.'
|
||||
with pytest.raises(ValueError, match=expected_error):
|
||||
factories.MailDomainAccessFactory(user="")
|
||||
|
||||
|
||||
def test_models_maildomainaccess__user_should_not_be_null():
|
||||
"""The user field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null."):
|
||||
factories.MailDomainAccessFactory(user=None)
|
||||
|
||||
|
||||
# DOMAIN FIELD
|
||||
|
||||
|
||||
def test_models_maildomainaccesses__domain_must_be_a_maildomain_instance():
|
||||
"""The "domain" field should be an instance of MailDomain."""
|
||||
expected_error = '"MailDomainAccess.domain" must be a "MailDomain" instance.'
|
||||
with pytest.raises(ValueError, match=expected_error):
|
||||
factories.MailDomainAccessFactory(domain="")
|
||||
|
||||
with pytest.raises(ValueError, match=expected_error):
|
||||
factories.MailDomainAccessFactory(domain="domain-as-string.com")
|
||||
|
||||
|
||||
def test_models_maildomainaccesses__domain_cannot_be_null():
|
||||
"""The "domain" field should not be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null"):
|
||||
factories.MailDomainAccessFactory(domain=None)
|
||||
|
||||
|
||||
# ROLE FIELD
|
||||
|
||||
|
||||
def test_models_maildomainaccesses__role_cannot_be_empty():
|
||||
"""The "role" field cannot be empty."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be blank"):
|
||||
factories.MailDomainAccessFactory(role="")
|
||||
|
||||
|
||||
def test_models_maildomainaccesses__role_cannot_be_null():
|
||||
"""The "role" field cannot be null."""
|
||||
with pytest.raises(ValidationError, match="This field cannot be null"):
|
||||
factories.MailDomainAccessFactory(role=None)
|
||||
Reference in New Issue
Block a user