From 402e73582c287268a36cf64541ccab3c07f23fa7 Mon Sep 17 00:00:00 2001 From: Marie PUPO JEAMMET Date: Tue, 6 Aug 2024 17:15:53 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(tests)=20improve=20tests=20for=20mail?= =?UTF-8?q?box=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regroup mailbox-related tests + add test 404 when trying to retrive a domain that doesn't exist + use enabled domains on tests --- src/backend/mailbox_manager/factories.py | 2 +- .../test_api_mail_domains_retrieve.py | 21 ++++++++++++++++--- .../mailboxes}/test_api_mailboxes_create.py | 0 .../mailboxes}/test_api_mailboxes_list.py | 0 4 files changed, 19 insertions(+), 4 deletions(-) rename src/backend/mailbox_manager/tests/{ => api/mailboxes}/test_api_mailboxes_create.py (100%) rename src/backend/mailbox_manager/tests/{ => api/mailboxes}/test_api_mailboxes_list.py (100%) diff --git a/src/backend/mailbox_manager/factories.py b/src/backend/mailbox_manager/factories.py index 5052549..70feea2 100644 --- a/src/backend/mailbox_manager/factories.py +++ b/src/backend/mailbox_manager/factories.py @@ -55,7 +55,7 @@ class MailDomainAccessFactory(factory.django.DjangoModelFactory): model = models.MailDomainAccess user = factory.SubFactory(core_factories.UserFactory) - domain = factory.SubFactory(MailDomainFactory) + domain = factory.SubFactory(MailDomainEnabledFactory) role = factory.fuzzy.FuzzyChoice( [r[0] for r in enums.MailDomainRoleChoices.choices] ) diff --git a/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_retrieve.py b/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_retrieve.py index 30cbb04..5a284fe 100644 --- a/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_retrieve.py +++ b/src/backend/mailbox_manager/tests/api/mail_domain/test_api_mail_domains_retrieve.py @@ -16,7 +16,7 @@ pytestmark = pytest.mark.django_db def test_api_mail_domains__retrieve_anonymous(): """Anonymous users should not be allowed to retrieve a domain.""" - domain = factories.MailDomainFactory() + domain = factories.MailDomainEnabledFactory() response = APIClient().get(f"/api/v1.0/mail-domains/{domain.slug}/") assert response.status_code == status.HTTP_401_UNAUTHORIZED @@ -25,6 +25,21 @@ def test_api_mail_domains__retrieve_anonymous(): } +def test_api_domains__retrieve_non_existing(): + """ + Authenticated users should have an explicit error when trying to retrive + a domain that doesn't exist. + """ + client = APIClient() + client.force_login(core_factories.UserFactory()) + + response = client.get( + "/api/v1.0/mail-domains/nonexistent.domain/", + ) + assert response.status_code == status.HTTP_404_NOT_FOUND + assert response.json() == {"detail": "Not found."} + + def test_api_mail_domains__retrieve_authenticated_unrelated(): """ Authenticated users should not be allowed to retrieve a domain @@ -35,7 +50,7 @@ def test_api_mail_domains__retrieve_authenticated_unrelated(): client = APIClient() client.force_login(user) - domain = factories.MailDomainFactory() + domain = factories.MailDomainEnabledFactory() response = client.get( f"/api/v1.0/mail-domains/{domain.slug}/", @@ -54,7 +69,7 @@ def test_api_mail_domains__retrieve_authenticated_related(): client = APIClient() client.force_login(user) - domain = factories.MailDomainFactory() + domain = factories.MailDomainEnabledFactory() factories.MailDomainAccessFactory(domain=domain, user=user) response = client.get( diff --git a/src/backend/mailbox_manager/tests/test_api_mailboxes_create.py b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py similarity index 100% rename from src/backend/mailbox_manager/tests/test_api_mailboxes_create.py rename to src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_create.py diff --git a/src/backend/mailbox_manager/tests/test_api_mailboxes_list.py b/src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_list.py similarity index 100% rename from src/backend/mailbox_manager/tests/test_api_mailboxes_list.py rename to src/backend/mailbox_manager/tests/api/mailboxes/test_api_mailboxes_list.py