From 1d4d40aad047009afb65999d69b67fa194e4ccf7 Mon Sep 17 00:00:00 2001 From: Marie PUPO JEAMMET Date: Mon, 9 Feb 2026 19:22:28 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB(demo)=20add?= =?UTF-8?q?=20aliases=20to=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add aliases to all domains in demo --- CHANGELOG.md | 1 + src/backend/demo/defaults.py | 2 + .../demo/management/commands/create_demo.py | 56 ++++++++++++------- .../demo/tests/test_commands_create_demo.py | 16 +++++- 4 files changed, 52 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61b180a..5ba8707 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to ### Added +- ✨(demo) add aliases to demo #1050 - ✨(front) add icon to button to configure a domain - ✨(invitations) allow delete invitations mails domains access by an admin - ✨(front) delete invitations mails domains access diff --git a/src/backend/demo/defaults.py b/src/backend/demo/defaults.py index 16707ac..70f24ba 100644 --- a/src/backend/demo/defaults.py +++ b/src/backend/demo/defaults.py @@ -5,4 +5,6 @@ NB_OBJECTS = { "teams": 100, "max_users_per_team": 100, "domains": 10, + "mailboxes_per_domain": 2, + "aliases_per_domain": 2, } diff --git a/src/backend/demo/management/commands/create_demo.py b/src/backend/demo/management/commands/create_demo.py index ed45b15..214250d 100755 --- a/src/backend/demo/management/commands/create_demo.py +++ b/src/backend/demo/management/commands/create_demo.py @@ -288,14 +288,12 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement ) queue.flush() + domains = mailbox_models.MailDomain.objects.all() with Timeit(stdout, "Creating accesses to domains"): - domains_ids = list( - mailbox_models.MailDomain.objects.values_list("id", flat=True) - ) - for domain_id in domains_ids: + for domain in domains: queue.push( mailbox_models.MailDomainAccess( - domain_id=domain_id, + domain=domain, user_id=random.choice(users_ids), role=models.RoleChoices.OWNER, ) @@ -304,11 +302,8 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement queue.flush() with Timeit(stdout, "Creating mailboxes"): - domains_ids = list( - mailbox_models.MailDomain.objects.values_list("id", flat=True) - ) - for domain_id in domains_ids: - for i in range(random.randint(1, 10)): + for domain in domains: + for i in range(defaults.NB_OBJECTS["mailboxes_per_domain"]): first_name = fake.first_name() last_name = fake.last_name() local_part = f"{first_name.lower()}.{last_name.lower()}{i}" @@ -318,7 +313,7 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement first_name=first_name, last_name=last_name, local_part=local_part, - domain_id=domain_id, + domain=domain, secondary_email=f"{local_part}@example.fr", status=random.choice(MailboxStatusChoices.values), dn_email=local_part, @@ -327,6 +322,19 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement queue.flush() + with Timeit(stdout, "Creating aliases"): + for domain in domains: + for _i in range(defaults.NB_OBJECTS["aliases_per_domain"]): + queue.push( + mailbox_models.Alias( + local_part=fake.word(), + destination=fake.email(), + domain=domain, + ) + ) + + queue.flush() + with Timeit(stdout, "Creating specific users"): # ⚠️ Warning: this users also need to be created in the keycloak # realm.json AND the OIDC setting to fallback on user email @@ -361,7 +369,7 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement queue.push(user_with_mail) queue.push( mailbox_models.MailDomainAccess( - domain_id=domains_ids[0], + domain=domains[0], user_id=user_with_mail.pk, role=role, ) @@ -387,7 +395,7 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement ) queue.push( mailbox_models.MailDomainAccess( - domain_id=domains_ids[0], + domain=domains[0], user_id=team_mail_user.pk, role=domain_role, ) @@ -414,21 +422,20 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement role=MailDomainRoleChoices.ADMIN, ) - # Many mailboxes domain - many_boxes_domain, _created = mailbox_models.MailDomain.objects.get_or_create( - name="many-boxes-domain.com", + # Many objects domain + many_objects_domain, _created = mailbox_models.MailDomain.objects.get_or_create( + name="many-objects-domain.com", status=MailDomainStatusChoices.ENABLED, support_email="support@mbd.com", ) - domain_owner = models.User.objects.get(email="e2e.mail-owner@example.com") mailbox_models.MailDomainAccess.objects.get_or_create( - domain=many_boxes_domain, + domain=many_objects_domain, user=domain_owner, role=MailDomainRoleChoices.OWNER, ) mailbox_models.MailDomainInvitation.objects.create( issuer=domain_owner, - domain=many_boxes_domain, + domain=many_objects_domain, email="people@people.world", role=MailDomainRoleChoices.OWNER, ) @@ -436,15 +443,22 @@ def create_demo(stdout): # pylint: disable=too-many-branches too-many-statement first_name = fake.first_name() last_name = fake.last_name() local_part = f"{first_name.lower()}.{last_name.lower()}" + mailbox_models.Mailbox.objects.create( - domain=many_boxes_domain, + domain=many_objects_domain, first_name=first_name, last_name=last_name, local_part=local_part, secondary_email=f"{local_part}@example.fr", status=random.choice(MailboxStatusChoices.values), password=make_password(None), # unusable password - dn_email=f"{local_part}@{many_boxes_domain}", + dn_email=f"{local_part}@{many_objects_domain}", + ) + + mailbox_models.Alias.objects.create( + local_part=fake.word(), + destination=fake.email(), + domain=many_objects_domain, ) # OIDC configuration diff --git a/src/backend/demo/tests/test_commands_create_demo.py b/src/backend/demo/tests/test_commands_create_demo.py index c6b1c38..f49cb83 100644 --- a/src/backend/demo/tests/test_commands_create_demo.py +++ b/src/backend/demo/tests/test_commands_create_demo.py @@ -20,6 +20,8 @@ TEST_NB_OBJECTS = { "teams": 100, "max_users_per_team": 5, "domains": 10, + "mailboxes_per_domain": 2, + "aliases_per_domain": 2, } @@ -33,8 +35,8 @@ def test_commands_create_demo(settings): call_command("create_demo") # Monique Test, Jeanne Test and Jean Something (quick fix for e2e) - # 3 user with team rights - # 3 user with domain rights + # 3 users with team rights + # 3 users with domain rights # 3 x 3 user with both rights assert models.User.objects.count() == TEST_NB_OBJECTS["users"] + 3 + 3 + 3 + 9 @@ -55,6 +57,16 @@ def test_commands_create_demo(settings): == TEST_NB_OBJECTS["domains"] + 3 + 9 + 2 ) + # TEST_NB_OBJECTS["domains"]*TEST_NB_OBJECTS["mailboxes_per_domain"] = 20 + # + 30 in the many-object-domain + # + 1 mailbox for user-e2e@example.com + # = 51 + assert mailbox_models.Mailbox.objects.count() == 51 + + # TEST_NB_OBJECTS["domains"]*TEST_NB_OBJECTS["mailboxes_per_alias"] = 20 + # + 30 in the many-object-domain + assert mailbox_models.Alias.objects.count() == 50 + def test_commands_createsuperuser(): """