authentik.core.tests.test_source_property_mappings
Test Source Property mappings
1"""Test Source Property mappings""" 2 3from django.test import TestCase 4 5from authentik.core.models import Group, PropertyMapping, Source, User 6from authentik.core.sources.mapper import SourceMapper 7from authentik.lib.generators import generate_id 8from authentik.lib.models import InternallyManagedMixin 9 10 11class ProxySource(InternallyManagedMixin, Source): 12 @property 13 def property_mapping_type(self): 14 return PropertyMapping 15 16 def get_base_user_properties(self, **kwargs): 17 return { 18 "username": kwargs.get("username", None), 19 "email": kwargs.get("email", "default@authentik"), 20 } 21 22 def get_base_group_properties(self, **kwargs): 23 return {"name": kwargs.get("name", None)} 24 25 class Meta: 26 proxy = True 27 28 29class TestSourcePropertyMappings(TestCase): 30 """Test Source PropertyMappings""" 31 32 def test_base_properties(self): 33 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 34 mapper = SourceMapper(source) 35 36 user_base_properties = mapper.get_base_properties(User, username="test1") 37 self.assertEqual( 38 user_base_properties, 39 { 40 "username": "test1", 41 "email": "default@authentik", 42 "path": f"goauthentik.io/sources/{source.slug}", 43 }, 44 ) 45 46 group_base_properties = mapper.get_base_properties(Group) 47 self.assertEqual(group_base_properties, {"name": None}) 48 49 def test_build_properties(self): 50 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 51 mapper = SourceMapper(source) 52 53 source.user_property_mappings.add( 54 PropertyMapping.objects.create( 55 name=generate_id(), 56 expression=""" 57 return {"username": data.get("username", None), "email": None} 58 """, 59 ) 60 ) 61 62 properties = mapper.build_object_properties( 63 object_type=User, user=None, request=None, username="test1", data={"username": "test2"} 64 ) 65 66 self.assertEqual( 67 properties, 68 { 69 "username": "test2", 70 "path": f"goauthentik.io/sources/{source.slug}", 71 "attributes": {}, 72 }, 73 )
12class ProxySource(InternallyManagedMixin, Source): 13 @property 14 def property_mapping_type(self): 15 return PropertyMapping 16 17 def get_base_user_properties(self, **kwargs): 18 return { 19 "username": kwargs.get("username", None), 20 "email": kwargs.get("email", "default@authentik"), 21 } 22 23 def get_base_group_properties(self, **kwargs): 24 return {"name": kwargs.get("name", None)} 25 26 class Meta: 27 proxy = True
ProxySource(pbm_uuid, policy_engine_mode, policybindingmodel_ptr, managed, name, slug, user_path_template, enabled, promoted, icon, authentication_flow, enrollment_flow, user_matching_mode, group_matching_mode)
def
get_base_user_properties(self, **kwargs):
17 def get_base_user_properties(self, **kwargs): 18 return { 19 "username": kwargs.get("username", None), 20 "email": kwargs.get("email", "default@authentik"), 21 }
Get base properties for a user to build final properties upon.
def
get_base_group_properties(self, **kwargs):
Get base properties for a group to build final properties upon.
Inherited Members
- authentik.core.models.Source
- MANAGED_INBUILT
- name
- slug
- user_path_template
- enabled
- promoted
- user_property_mappings
- group_property_mappings
- icon
- authentication_flow
- enrollment_flow
- user_matching_mode
- group_matching_mode
- objects
- icon_url
- icon_themed_urls
- get_user_path
- component
- ui_user_settings
- managed
- authentication_flow_id
- enrollment_flow_id
- get_user_matching_mode_display
- get_group_matching_mode_display
- policybindingmodel_ptr_id
- policybindingmodel_ptr
- user_set
- usersourceconnection_set
- groupsourceconnection_set
- oauthsource
- samlsource
- kerberossource
- ldapsource
- identificationstage_set
- plexsource
- scimsource
- telegramsource
- sourcestage_set
The requested object does not exist
The query returned multiple objects when only one was expected.
class
TestSourcePropertyMappings(django.test.testcases.TestCase):
30class TestSourcePropertyMappings(TestCase): 31 """Test Source PropertyMappings""" 32 33 def test_base_properties(self): 34 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 35 mapper = SourceMapper(source) 36 37 user_base_properties = mapper.get_base_properties(User, username="test1") 38 self.assertEqual( 39 user_base_properties, 40 { 41 "username": "test1", 42 "email": "default@authentik", 43 "path": f"goauthentik.io/sources/{source.slug}", 44 }, 45 ) 46 47 group_base_properties = mapper.get_base_properties(Group) 48 self.assertEqual(group_base_properties, {"name": None}) 49 50 def test_build_properties(self): 51 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 52 mapper = SourceMapper(source) 53 54 source.user_property_mappings.add( 55 PropertyMapping.objects.create( 56 name=generate_id(), 57 expression=""" 58 return {"username": data.get("username", None), "email": None} 59 """, 60 ) 61 ) 62 63 properties = mapper.build_object_properties( 64 object_type=User, user=None, request=None, username="test1", data={"username": "test2"} 65 ) 66 67 self.assertEqual( 68 properties, 69 { 70 "username": "test2", 71 "path": f"goauthentik.io/sources/{source.slug}", 72 "attributes": {}, 73 }, 74 )
Test Source PropertyMappings
def
test_base_properties(self):
33 def test_base_properties(self): 34 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 35 mapper = SourceMapper(source) 36 37 user_base_properties = mapper.get_base_properties(User, username="test1") 38 self.assertEqual( 39 user_base_properties, 40 { 41 "username": "test1", 42 "email": "default@authentik", 43 "path": f"goauthentik.io/sources/{source.slug}", 44 }, 45 ) 46 47 group_base_properties = mapper.get_base_properties(Group) 48 self.assertEqual(group_base_properties, {"name": None})
def
test_build_properties(self):
50 def test_build_properties(self): 51 source = ProxySource.objects.create(name=generate_id(), slug=generate_id(), enabled=True) 52 mapper = SourceMapper(source) 53 54 source.user_property_mappings.add( 55 PropertyMapping.objects.create( 56 name=generate_id(), 57 expression=""" 58 return {"username": data.get("username", None), "email": None} 59 """, 60 ) 61 ) 62 63 properties = mapper.build_object_properties( 64 object_type=User, user=None, request=None, username="test1", data={"username": "test2"} 65 ) 66 67 self.assertEqual( 68 properties, 69 { 70 "username": "test2", 71 "path": f"goauthentik.io/sources/{source.slug}", 72 "attributes": {}, 73 }, 74 )