WIP refacto test responses

This commit is contained in:
Marie PUPO JEAMMET
2026-04-20 19:12:11 +02:00
parent 5d50aa8cf2
commit a73e42a8b7
4 changed files with 51 additions and 103 deletions

View File

@@ -123,13 +123,9 @@ def test_api_mailboxes__create_display_name_no_constraint_on_different_domains(
# ensure response
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{new_mailbox_data['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
client = APIClient()
@@ -161,16 +157,11 @@ def test_api_mailboxes__create_roles_success(role, dimail_token_ok, mailbox_data
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(
rf".*/domains/{mail_domain.name}/mailboxes/{mailbox_data['local_part']}$"
),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{mail_domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(
mail_domain.name, mailbox_data["local_part"]
)
@@ -216,14 +207,11 @@ def test_api_mailboxes__create_with_accent_success(role, dimail_token_ok):
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{mail_domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_values['local_part']}@{mail_domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(mail_domain, mailbox_values["local_part"])
response = client.post(
f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/",
@@ -254,17 +242,10 @@ def test_api_mailboxes__create_lowercase(dimail_token_ok, mailbox_data):
# ensure response
# token response in fixtures
responses.add(
responses.POST,
re.compile(
rf".*/domains/{access.domain.name}/mailboxes/{mailbox_data['local_part'].lower()}"
),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(
access.domain, mailbox_data["local_part"].lower()
)
@@ -326,14 +307,11 @@ def test_api_mailboxes__create_without_secondary_email(role, caplog, dimail_toke
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{mail_domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_values['local_part']}@{mail_domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
response = client.post(
f"/api/v1.0/mail-domains/{mail_domain.slug}/mailboxes/",
mailbox_values,
@@ -427,14 +405,11 @@ def test_api_mailboxes__same_local_part_on_different_domains(dimail_token_ok):
).data
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_values['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, existing_mailbox.local_part)
response = client.post(
f"/api/v1.0/mail-domains/{access.domain.slug}/mailboxes/",
@@ -492,13 +467,11 @@ def test_api_mailboxes__no_conflict_existing_alias_ok(mailbox_data, dimail_token
client.force_login(access.user)
responses.post(
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{alias.local_part}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(alias.domain, alias.local_part)
response = client.post(
@@ -605,14 +578,11 @@ def test_api_mailboxes__domain_owner_or_admin_successful_creation_and_provisioni
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, mailbox_data["local_part"])
response = client.post(
f"/api/v1.0/mail-domains/{access.domain.slug}/mailboxes/",
@@ -663,14 +633,11 @@ def test_api_mailboxes__domain_owner_or_admin_successful_creation_sets_password(
client.force_login(access.user)
# Ensure successful response using "responses":
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, mailbox_data["local_part"])
response = client.post(
f"/api/v1.0/mail-domains/{access.domain.slug}/mailboxes/",
@@ -954,14 +921,11 @@ def test_api_mailboxes__send_correct_logger_infos(
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain.name}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, mailbox_data["local_part"])
response = client.post(
f"/api/v1.0/mail-domains/{access.domain.slug}/mailboxes/",
@@ -1005,14 +969,11 @@ def test_api_mailboxes__sends_new_mailbox_notification(
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, mailbox_data["local_part"])
with mock.patch("django.core.mail.send_mail") as mock_send:
@@ -1060,14 +1021,11 @@ def test_api_mailboxes__sends_new_mailbox_notification_with_password(
# Ensure successful response using "responses":
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{access.domain.name}/mailboxes/"),
body=dimail_responses.response_mailbox_created(
dimail_responses.response_mailbox_created(
f"{mailbox_data['local_part']}@{access.domain}"
),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
)
dimail_responses.response_login_code_ok(access.domain, mailbox_data["local_part"])
with mock.patch("django.core.mail.send_mail") as mock_send:

View File

@@ -319,7 +319,13 @@ def response_allows_created(user_name, domain_name):
## MAILBOXES
def response_mailbox_created(email_address):
"""mimic dimail response upon successful mailbox creation."""
return json.dumps({"email": email_address.lower(), "password": "password"})
local_part, domain = email_address.split("@")
return responses.post(
re.compile(rf".*/domains/{domain}/mailboxes/{local_part.lower()}$"),
json={"email": email_address.lower(), "password": "password"},
status=status.HTTP_201_CREATED,
content_type="application/json",
)
# Fixture

View File

@@ -15,12 +15,12 @@ from core import factories as core_factories
from mailbox_manager import enums, factories, models
from mailbox_manager.admin import DomainResource
from mailbox_manager.tests.fixtures import dimail as dimail_responses
from .fixtures.dimail import (
CHECK_DOMAIN_BROKEN,
CHECK_DOMAIN_OK,
DOMAIN_SPEC,
response_mailbox_created,
)
@@ -130,13 +130,7 @@ def test_fetch_domain_status__should_switch_to_enabled_when_domain_ok(
)
# we need to get a token to create mailboxes
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{domain1.name}/mailboxes/"),
body=response_mailbox_created(f"truc@{domain1.name}"),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
responses.add(dimail_responses.response_mailbox_created(f"truc@{domain1.name}"))
response = client.post(url, data, follow=True)
assert response.status_code == status.HTTP_200_OK
@@ -221,11 +215,9 @@ def test_send_pending_mailboxes(client, dimail_token_ok): # pylint: disable=W06
for mailbox in mailboxes:
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{domain.name}/mailboxes/"),
body=response_mailbox_created(f"{mailbox.local_part}@{domain.name}"),
status=status.HTTP_201_CREATED,
content_type="application/json",
dimail_responses.response_mailbox_created(
f"{mailbox.local_part}@{domain.name}"
)
)
response = client.post(url, data, follow=True)
@@ -253,14 +245,10 @@ def test_send_pending_mailboxes__listing_failed_mailboxes(client, dimail_token_o
url = reverse("admin:mailbox_manager_maildomain_changelist")
# token response in fixtures
responses.add(
responses.POST,
re.compile(rf".*/domains/{domain.name}/mailboxes/"),
body=response_mailbox_created(f"{mailbox.local_part}@{domain.name}"),
status=status.HTTP_409_CONFLICT,
content_type="application/json",
dimail_responses.response_mailbox_created(f"{mailbox.local_part}@{domain.name}")
)
response = client.post(url, data, follow=True)
response = client.post(url, data, follow=True)
assert response.status_code == status.HTTP_200_OK
assert (
f"Failed to send the following mailboxes : {str(mailbox)}"

View File

@@ -14,12 +14,12 @@ from rest_framework import status
from mailbox_manager import enums, factories, models
from mailbox_manager.utils.dimail import DimailAPIClient
from .fixtures import dimail as dimail_responses
from .fixtures.dimail import (
CHECK_DOMAIN_BROKEN,
CHECK_DOMAIN_BROKEN_EXTERNAL,
CHECK_DOMAIN_BROKEN_INTERNAL,
CHECK_DOMAIN_OK,
response_mailbox_created,
)
pytestmark = pytest.mark.django_db
@@ -422,12 +422,8 @@ def test_dimail__send_pending_mailboxes(caplog, dimail_token_ok):
# Ensure successful response using "responses":
# token response in fixtures
responses.post(
re.compile(rf".*/domains/{domain.name}/mailboxes/"),
body=response_mailbox_created(f"mock@{domain.name}"),
status=status.HTTP_201_CREATED,
content_type="application/json",
)
responses.add(dimail_responses.response_mailbox_created(f"mock@{domain.name}"))
dimail_client.send_pending_mailboxes(domain=domain)
mailbox1.refresh_from_db()