authentik.sources.ldap.tests.test_password

LDAP Source tests

 1"""LDAP Source tests"""
 2
 3from unittest.mock import MagicMock, patch
 4
 5from django.test import TestCase
 6
 7from authentik.core.models import User
 8from authentik.sources.ldap.models import LDAPSource, LDAPSourcePropertyMapping
 9from authentik.sources.ldap.password import LDAPPasswordChanger
10from authentik.sources.ldap.tests.mock_ad import mock_ad_connection
11
12LDAP_CONNECTION_PATCH = MagicMock(return_value=mock_ad_connection())
13
14
15class LDAPPasswordTests(TestCase):
16    """LDAP Password tests"""
17
18    def setUp(self):
19        self.source = LDAPSource.objects.create(
20            name="ldap",
21            slug="ldap",
22            base_dn="dc=t,dc=goauthentik,dc=io",
23            additional_user_dn="",
24            additional_group_dn="",
25        )
26        self.source.user_property_mappings.set(LDAPSourcePropertyMapping.objects.all())
27        self.source.save()
28
29    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
30    def test_password_complexity(self):
31        """Test password without user"""
32        pwc = LDAPPasswordChanger(self.source)
33        self.assertFalse(pwc.ad_password_complexity("test"))  # 1 category
34        self.assertFalse(pwc.ad_password_complexity("test1"))  # 2 categories
35        self.assertTrue(pwc.ad_password_complexity("test1!"))  # 2 categories
36
37    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
38    def test_password_complexity_user(self):
39        """test password with user"""
40        pwc = LDAPPasswordChanger(self.source)
41        user = User.objects.create(
42            username="test",
43            attributes={
44                "distinguishedName": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io"
45            },
46        )
47        self.assertFalse(pwc.ad_password_complexity("test", user))  # 1 category
48        self.assertFalse(pwc.ad_password_complexity("test1", user))  # 2 categories
49        self.assertTrue(pwc.ad_password_complexity("test1!", user))  # 2 categories
50        self.assertFalse(pwc.ad_password_complexity("erin!qewrqewr", user))  # displayName token
51        self.assertFalse(pwc.ad_password_complexity("hagens!qewrqewr", user))  # displayName token
LDAP_CONNECTION_PATCH = <MagicMock id='140377042830064'>
class LDAPPasswordTests(django.test.testcases.TestCase):
16class LDAPPasswordTests(TestCase):
17    """LDAP Password tests"""
18
19    def setUp(self):
20        self.source = LDAPSource.objects.create(
21            name="ldap",
22            slug="ldap",
23            base_dn="dc=t,dc=goauthentik,dc=io",
24            additional_user_dn="",
25            additional_group_dn="",
26        )
27        self.source.user_property_mappings.set(LDAPSourcePropertyMapping.objects.all())
28        self.source.save()
29
30    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
31    def test_password_complexity(self):
32        """Test password without user"""
33        pwc = LDAPPasswordChanger(self.source)
34        self.assertFalse(pwc.ad_password_complexity("test"))  # 1 category
35        self.assertFalse(pwc.ad_password_complexity("test1"))  # 2 categories
36        self.assertTrue(pwc.ad_password_complexity("test1!"))  # 2 categories
37
38    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
39    def test_password_complexity_user(self):
40        """test password with user"""
41        pwc = LDAPPasswordChanger(self.source)
42        user = User.objects.create(
43            username="test",
44            attributes={
45                "distinguishedName": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io"
46            },
47        )
48        self.assertFalse(pwc.ad_password_complexity("test", user))  # 1 category
49        self.assertFalse(pwc.ad_password_complexity("test1", user))  # 2 categories
50        self.assertTrue(pwc.ad_password_complexity("test1!", user))  # 2 categories
51        self.assertFalse(pwc.ad_password_complexity("erin!qewrqewr", user))  # displayName token
52        self.assertFalse(pwc.ad_password_complexity("hagens!qewrqewr", user))  # displayName token

LDAP Password tests

def setUp(self):
19    def setUp(self):
20        self.source = LDAPSource.objects.create(
21            name="ldap",
22            slug="ldap",
23            base_dn="dc=t,dc=goauthentik,dc=io",
24            additional_user_dn="",
25            additional_group_dn="",
26        )
27        self.source.user_property_mappings.set(LDAPSourcePropertyMapping.objects.all())
28        self.source.save()

Hook method for setting up the test fixture before exercising it.

@patch('authentik.sources.ldap.models.LDAPSource.connection', LDAP_CONNECTION_PATCH)
def test_password_complexity(self):
30    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
31    def test_password_complexity(self):
32        """Test password without user"""
33        pwc = LDAPPasswordChanger(self.source)
34        self.assertFalse(pwc.ad_password_complexity("test"))  # 1 category
35        self.assertFalse(pwc.ad_password_complexity("test1"))  # 2 categories
36        self.assertTrue(pwc.ad_password_complexity("test1!"))  # 2 categories

Test password without user

@patch('authentik.sources.ldap.models.LDAPSource.connection', LDAP_CONNECTION_PATCH)
def test_password_complexity_user(self):
38    @patch("authentik.sources.ldap.models.LDAPSource.connection", LDAP_CONNECTION_PATCH)
39    def test_password_complexity_user(self):
40        """test password with user"""
41        pwc = LDAPPasswordChanger(self.source)
42        user = User.objects.create(
43            username="test",
44            attributes={
45                "distinguishedName": "CN=Erin M. Hagens,OU=ak-test,DC=t,DC=goauthentik,DC=io"
46            },
47        )
48        self.assertFalse(pwc.ad_password_complexity("test", user))  # 1 category
49        self.assertFalse(pwc.ad_password_complexity("test1", user))  # 2 categories
50        self.assertTrue(pwc.ad_password_complexity("test1!", user))  # 2 categories
51        self.assertFalse(pwc.ad_password_complexity("erin!qewrqewr", user))  # displayName token
52        self.assertFalse(pwc.ad_password_complexity("hagens!qewrqewr", user))  # displayName token

test password with user