From 82aac4a5f6794b88623c598c80bf1591b16338c2 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 29 Nov 2022 17:46:22 +0100 Subject: [PATCH] data_transfer: export new role attributes (#71844) --- src/authentic2/a2_rbac/models.py | 10 +++++----- tests/test_a2_rbac.py | 11 ++++++++++- tests/test_data_transfer.py | 17 +++++++++++++++++ 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/authentic2/a2_rbac/models.py b/src/authentic2/a2_rbac/models.py index 3bbc00507..14d210276 100644 --- a/src/authentic2/a2_rbac/models.py +++ b/src/authentic2/a2_rbac/models.py @@ -650,21 +650,21 @@ class Role(AbstractBase): 'ou__slug': self.ou.slug if self.ou else None, } - def export_json(self, attributes=False, parents=False, permissions=False): + def export_json(self, parents=False, permissions=False): d = { 'uuid': self.uuid, 'slug': self.slug, 'name': self.name, 'description': self.description, + 'details': self.details, + 'emails': self.emails, + 'emails_to_members': self.emails_to_members, + 'is_superuser': self.is_superuser, 'external_id': self.external_id, 'ou': self.ou and self.ou.natural_key_json(), 'service': self.service and self.service.natural_key_json(), } - if attributes: - for attribute in self.attributes.all(): - d.setdefault('attributes', []).append(attribute.to_json()) - if parents: for parenting in RoleParenting.objects.filter( child_id=self.id, direct=True, deleted__isnull=True diff --git a/tests/test_a2_rbac.py b/tests/test_a2_rbac.py index a3a60fc3c..270a1fb12 100644 --- a/tests/test_a2_rbac.py +++ b/tests/test_a2_rbac.py @@ -145,12 +145,21 @@ def test_role_natural_key(db): def test_basic_role_export_json(db): - role = Role.objects.create(name='basic role', slug='basic-role', description='basic role description') + role = Role.objects.create( + name='basic role', + slug='basic-role', + description='basic role description', + emails=['test@example.org'], + ) role_dict = role.export_json() assert role_dict['name'] == role.name assert role_dict['slug'] == role.slug assert role_dict['uuid'] == role.uuid assert role_dict['description'] == role.description + assert role_dict['details'] == role.details + assert role_dict['emails'] == role.emails + assert role_dict['emails_to_members'] == role.emails_to_members + assert role_dict['is_superuser'] == role.is_superuser assert role_dict['external_id'] == role.external_id assert role_dict['ou'] is None assert role_dict['service'] is None diff --git a/tests/test_data_transfer.py b/tests/test_data_transfer.py index 062d1611f..cfd2dfe00 100644 --- a/tests/test_data_transfer.py +++ b/tests/test_data_transfer.py @@ -327,6 +327,23 @@ def test_role_deserializer_parenting_non_existing_parent(db): assert "Could not find parent role" in str(excinfo.value) +def test_role_deserializer_emails(db): + role_dict = { + 'name': 'test role', + 'slug': 'test-role-slug', + 'uuid': get_hex_uuid(), + 'ou': None, + 'emails': ['a@example.com'], + } + + import_context = ImportContext() + rd = RoleDeserializer(role_dict, import_context) + rd.deserialize() + + role = Role.objects.get(slug='test-role-slug') + assert role.emails == ['a@example.com'] + + def test_role_deserializer_permissions(db): ou = OU.objects.create(slug='some-ou') other_role_dict = {'name': 'other role', 'slug': 'other-role-slug', 'uuid': get_hex_uuid(), 'ou': ou} -- 2.35.1