(models) add MailDomain status

Add some status to allow to create mailboxes only for an active domain
This commit is contained in:
Sabrina Demagny
2024-07-07 01:16:33 +02:00
parent d69861c148
commit 955a3dd226
8 changed files with 102 additions and 9 deletions

View File

@@ -15,7 +15,7 @@ pytestmark = pytest.mark.django_db
def test_api_mailboxes__create_anonymous_forbidden():
"""Anonymous users should not be able to create a new mailbox via the API."""
mail_domain = factories.MailDomainFactory()
mail_domain = factories.MailDomainEnabledFactory()
response = APIClient().post(
f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/",
@@ -41,7 +41,7 @@ def test_api_mailboxes__create_authenticated_missing_fields():
client = APIClient()
client.force_login(user)
mail_domain = factories.MailDomainFactory()
mail_domain = factories.MailDomainEnabledFactory()
response = client.post(
f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/",
{
@@ -78,7 +78,7 @@ def test_api_mailboxes__create_authenticated_successful():
client = APIClient()
client.force_login(user)
mail_domain = factories.MailDomainFactory(name="saint-jean.collectivite.fr")
mail_domain = factories.MailDomainEnabledFactory(name="saint-jean.collectivite.fr")
response = client.post(
f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/",
{

View File

@@ -15,7 +15,7 @@ pytestmark = pytest.mark.django_db
def test_api_mailboxes__list_anonymous():
"""Anonymous users should not be allowed to list mailboxes."""
mail_domain = factories.MailDomainFactory()
mail_domain = factories.MailDomainEnabledFactory()
factories.MailboxFactory.create_batch(2, domain=mail_domain)
response = APIClient().get(f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/")
@@ -32,7 +32,7 @@ def test_api_mailboxes__list_authenticated_no_query():
client = APIClient()
client.force_login(user)
mail_domain = factories.MailDomainFactory()
mail_domain = factories.MailDomainEnabledFactory()
mailbox1 = factories.MailboxFactory(domain=mail_domain)
mailbox2 = factories.MailboxFactory(domain=mail_domain)

View File

@@ -6,7 +6,7 @@ from django.core.exceptions import ValidationError
import pytest
from mailbox_manager import factories
from mailbox_manager import enums, factories
pytestmark = pytest.mark.django_db
@@ -89,3 +89,40 @@ 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)
def test_models_mailboxes__cannot_be_created_for_disabled_maildomain():
"""Mailbox creation is allowed only for a domain enabled.
A disabled status for the mail domain raises an error."""
with pytest.raises(
ValidationError, match="You can create mailbox only for a domain enabled"
):
factories.MailboxFactory(
domain=factories.MailDomainFactory(
status=enums.MailDomainStatusChoices.DISABLED
)
)
def test_models_mailboxes__cannot_be_created_for_failed_maildomain():
"""Mailbox creation is allowed only for a domain enabled.
A failed status for the mail domain raises an error."""
with pytest.raises(
ValidationError, match="You can create mailbox only for a domain enabled"
):
factories.MailboxFactory(
domain=factories.MailDomainFactory(
status=enums.MailDomainStatusChoices.FAILED
)
)
def test_models_mailboxes__cannot_be_created_for_pending_maildomain():
"""Mailbox creation is allowed only for a domain enabled.
A pending status for the mail domain raises an error."""
with pytest.raises(
ValidationError, match="You can create mailbox only for a domain enabled"
):
# MailDomainFactory initializes a mail domain with default values,
# so mail domain status is pending!
factories.MailboxFactory(domain=factories.MailDomainFactory())