🧑‍💻(dimail) modify makefile to setup dimail container upon running demo

Setup dimail container upon running demo so that it's always in sync.
This commit is contained in:
Marie PUPO JEAMMET
2025-06-06 18:06:06 +02:00
committed by Marie
parent 0bbce9ffc8
commit 86c98cc426
4 changed files with 18 additions and 66 deletions

View File

@@ -6,8 +6,6 @@ from django.core.management import call_command
import pytest
import responses
from core import factories
from mailbox_manager import factories as mailbox_factories
from mailbox_manager.management.commands.setup_dimail_db import DIMAIL_URL, admin
@@ -22,23 +20,12 @@ def test_commands_setup_dimail_db(settings):
"""The create_demo management command should create objects as expected."""
settings.DEBUG = True # required to run the command
john_doe = factories.UserFactory(
name="John Doe", email="people@people.world", sub="sub.john.doe"
)
# mock dimail API
responses.add(responses.POST, f"{DIMAIL_URL}/users/", status=201)
responses.add(responses.POST, f"{DIMAIL_URL}/domains/", status=201)
responses.add(responses.POST, f"{DIMAIL_URL}/allows/", status=201)
responses.add(
responses.GET,
responses.post(f"{DIMAIL_URL}/users/", status=201)
responses.post(f"{DIMAIL_URL}/domains/", status=201)
responses.get(
f"{DIMAIL_URL}/users/",
json=[
{
"is_admin": False,
"name": john_doe.sub,
"perms": [],
},
{
"is_admin": True,
"name": "admin",
@@ -59,7 +46,7 @@ def test_commands_setup_dimail_db(settings):
call_command("setup_dimail_db")
# check dimail API received the expected requests
assert len(responses.calls) == 5
assert len(responses.calls) == 2
assert responses.calls[0].request.url == f"{DIMAIL_URL}/users/"
assert (
responses.calls[0].request.body
@@ -72,25 +59,6 @@ def test_commands_setup_dimail_db(settings):
b'"perms": ["new_domain", "create_users", "manage_users"]}'
)
assert responses.calls[2].request.url == f"{DIMAIL_URL}/domains/"
assert responses.calls[2].request.body == (
b'{"name": "test.domain.com", "context_name": "test.domain.com", '
b'"features": ["webmail", "mailbox", "alias"], '
b'"delivery": "virtual"}'
)
assert responses.calls[3].request.url == f"{DIMAIL_URL}/users/"
assert (
responses.calls[3].request.body
== b'{"name": "sub.john.doe", "password": "no", "is_admin": false, "perms": []}'
)
assert responses.calls[4].request.url == f"{DIMAIL_URL}/allows/"
assert (
responses.calls[4].request.body
== b'{"user": "sub.john.doe", "domain": "test.domain.com"}'
)
# reset the responses counter
responses.calls.reset() # pylint: disable=no-member
@@ -102,29 +70,14 @@ def test_commands_setup_dimail_db(settings):
call_command("setup_dimail_db", "--populate-from-people")
# check dimail API received the expected requests
assert (
len(responses.calls) == 5 + 3 + 3
) # calls for some.domain.com and test.domain.com
assert len(responses.calls) == 3 # calls for some.domain.com and test.domain.com
dimail_calls = []
for call in responses.calls[5:]:
for call in responses.calls[3:]:
dimail_calls.append((call.request.url, call.request.body))
assert (
f"{DIMAIL_URL}/domains/",
(
b'{"name": "some.domain.com", "context_name": "some.domain.com", '
b'"features": ["webmail", "mailbox", "alias"], '
b'"delivery": "virtual"}'
),
) in dimail_calls
assert (
f"{DIMAIL_URL}/users/",
(b'{"name": "sub.toto.123", "password": "no", "is_admin": false, "perms": []}'),
) in dimail_calls
assert (
f"{DIMAIL_URL}/allows/",
b'{"user": "sub.toto.123", "domain": "some.domain.com"}',
) in dimail_calls
assert responses.calls[2].request.body == (
b'{"name": "some.domain.com", "context_name": "some.domain.com", '
b'"features": ["webmail", "mailbox", "alias"], '
b'"delivery": "virtual"}'
)