From ea3a45ea8752792a4ba9b3ea3c77ce4530d5b758 Mon Sep 17 00:00:00 2001 From: Sabrina Demagny Date: Thu, 16 Jan 2025 21:49:30 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85(dimail)=20improve=20fetch=20domain=20?= =?UTF-8?q?status=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add missing test case and add a new fake data for fetch domain status from dimail --- .../mailbox_manager/tests/fixtures/dimail.py | 23 +++++++++++++++++++ .../tests/test_admin_actions.py | 5 ++-- .../tests/test_utils_dimail_client.py | 22 ++++++++++++++---- 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/backend/mailbox_manager/tests/fixtures/dimail.py b/src/backend/mailbox_manager/tests/fixtures/dimail.py index 25fe4b7..5606816 100644 --- a/src/backend/mailbox_manager/tests/fixtures/dimail.py +++ b/src/backend/mailbox_manager/tests/fixtures/dimail.py @@ -80,3 +80,26 @@ CHECK_DOMAIN_BROKEN = { ], }, } + +CHECK_DOMAIN_OK = { + "name": "example.fr", + "state": "ok", + "valid": True, + "delivery": "virtual", + "features": ["webmail", "mailbox"], + "webmail_domain": None, + "imap_domain": None, + "smtp_domain": None, + "context_name": "example.fr", + "transport": None, + "domain_exist": {"ok": True, "internal": False, "errors": []}, + "mx": {"ok": True, "internal": False, "errors": []}, + "cname_imap": {"ok": True, "internal": False, "errors": []}, + "cname_smtp": {"ok": True, "internal": False, "errors": []}, + "cname_webmail": {"ok": True, "internal": False, "errors": []}, + "spf": {"ok": True, "internal": False, "errors": []}, + "dkim": {"ok": True, "internal": False, "errors": []}, + "postfix": {"ok": True, "internal": True, "errors": []}, + "ox": {"ok": True, "internal": True, "errors": []}, + "cert": {"ok": True, "internal": True, "errors": []}, +} diff --git a/src/backend/mailbox_manager/tests/test_admin_actions.py b/src/backend/mailbox_manager/tests/test_admin_actions.py index 61f440c..73df6f7 100644 --- a/src/backend/mailbox_manager/tests/test_admin_actions.py +++ b/src/backend/mailbox_manager/tests/test_admin_actions.py @@ -14,7 +14,7 @@ from core import factories as core_factories from mailbox_manager import enums, factories -from .fixtures.dimail import CHECK_DOMAIN_BROKEN +from .fixtures.dimail import CHECK_DOMAIN_BROKEN, CHECK_DOMAIN_OK @pytest.mark.django_db @@ -61,7 +61,8 @@ def test_admin_action__fetch_domain_status_from_dimail(client): assert "Check domains done with success" in response.content.decode("utf-8") # check with a valid domain info from dimail - body_content_domain1["state"] = "ok" + body_content_domain1 = CHECK_DOMAIN_OK.copy() + body_content_domain1["name"] = domain1.name rsps.add( rsps.GET, re.compile(rf".*/domains/{domain1.name}/check/"), diff --git a/src/backend/mailbox_manager/tests/test_utils_dimail_client.py b/src/backend/mailbox_manager/tests/test_utils_dimail_client.py index 970cdaa..7a60dfd 100644 --- a/src/backend/mailbox_manager/tests/test_utils_dimail_client.py +++ b/src/backend/mailbox_manager/tests/test_utils_dimail_client.py @@ -15,7 +15,7 @@ from rest_framework import status from mailbox_manager import enums, factories, models from mailbox_manager.utils.dimail import DimailAPIClient -from .fixtures.dimail import CHECK_DOMAIN_BROKEN +from .fixtures.dimail import CHECK_DOMAIN_BROKEN, CHECK_DOMAIN_OK pytestmark = pytest.mark.django_db @@ -163,12 +163,12 @@ def test_dimail__fetch_domain_status_from_dimail(): """Request to dimail health status of a domain""" domain = factories.MailDomainEnabledFactory() with responses.RequestsMock() as rsps: - body_content_domain = CHECK_DOMAIN_BROKEN.copy() - body_content_domain["name"] = domain.name + body_content = CHECK_DOMAIN_BROKEN.copy() + body_content["name"] = domain.name rsps.add( rsps.GET, re.compile(rf".*/domains/{domain.name}/check/"), - body=json.dumps(body_content_domain), + body=json.dumps(body_content), status=status.HTTP_200_OK, content_type="application/json", ) @@ -176,3 +176,17 @@ def test_dimail__fetch_domain_status_from_dimail(): response = dimail_client.fetch_domain_status(domain) assert response.status_code == status.HTTP_200_OK assert domain.status == enums.MailDomainStatusChoices.FAILED + + # Now domain is ok again + body_content = CHECK_DOMAIN_OK.copy() + body_content["name"] = domain.name + rsps.add( + rsps.GET, + re.compile(rf".*/domains/{domain.name}/check/"), + body=json.dumps(body_content), + status=status.HTTP_200_OK, + content_type="application/json", + ) + response = dimail_client.fetch_domain_status(domain) + assert response.status_code == status.HTTP_200_OK + assert domain.status == enums.MailDomainStatusChoices.ENABLED