authentik.sources.kerberos.tests.test_auth

Kerberos Source Auth tests

 1"""Kerberos Source Auth tests"""
 2
 3from django.contrib.auth.hashers import is_password_usable
 4
 5from authentik.core.models import User
 6from authentik.lib.generators import generate_id
 7from authentik.sources.kerberos.auth import KerberosBackend
 8from authentik.sources.kerberos.models import KerberosSource, UserKerberosSourceConnection
 9from authentik.sources.kerberos.tests.utils import KerberosTestCase
10
11
12class TestKerberosAuth(KerberosTestCase):
13    """Kerberos Auth tests"""
14
15    def setUp(self):
16        self.source = KerberosSource.objects.create(
17            name="kerberos",
18            slug="kerberos",
19            realm=self.realm.realm,
20            sync_users=False,
21            sync_users_password=False,
22            password_login_update_internal_password=True,
23        )
24        self.user = User.objects.create(username=generate_id())
25        self.user.set_unusable_password()
26        self.user.save()
27        UserKerberosSourceConnection.objects.create(
28            source=self.source, user=self.user, identifier=self.realm.user_princ
29        )
30
31    def test_auth_username(self):
32        """Test auth username"""
33        backend = KerberosBackend()
34        self.assertEqual(
35            backend.authenticate(
36                None, username=self.user.username, password=self.realm.password("user")
37            ),
38            self.user,
39        )
40
41    def test_auth_principal(self):
42        """Test auth principal"""
43        backend = KerberosBackend()
44        self.assertEqual(
45            backend.authenticate(
46                None, username=self.realm.user_princ, password=self.realm.password("user")
47            ),
48            self.user,
49        )
50
51    def test_internal_password_update(self):
52        """Test internal password update"""
53        backend = KerberosBackend()
54        backend.authenticate(
55            None, username=self.realm.user_princ, password=self.realm.password("user")
56        )
57        self.user.refresh_from_db()
58        self.assertTrue(is_password_usable(self.user.password))
class TestKerberosAuth(authentik.sources.kerberos.tests.utils.KerberosTestCase):
13class TestKerberosAuth(KerberosTestCase):
14    """Kerberos Auth tests"""
15
16    def setUp(self):
17        self.source = KerberosSource.objects.create(
18            name="kerberos",
19            slug="kerberos",
20            realm=self.realm.realm,
21            sync_users=False,
22            sync_users_password=False,
23            password_login_update_internal_password=True,
24        )
25        self.user = User.objects.create(username=generate_id())
26        self.user.set_unusable_password()
27        self.user.save()
28        UserKerberosSourceConnection.objects.create(
29            source=self.source, user=self.user, identifier=self.realm.user_princ
30        )
31
32    def test_auth_username(self):
33        """Test auth username"""
34        backend = KerberosBackend()
35        self.assertEqual(
36            backend.authenticate(
37                None, username=self.user.username, password=self.realm.password("user")
38            ),
39            self.user,
40        )
41
42    def test_auth_principal(self):
43        """Test auth principal"""
44        backend = KerberosBackend()
45        self.assertEqual(
46            backend.authenticate(
47                None, username=self.realm.user_princ, password=self.realm.password("user")
48            ),
49            self.user,
50        )
51
52    def test_internal_password_update(self):
53        """Test internal password update"""
54        backend = KerberosBackend()
55        backend.authenticate(
56            None, username=self.realm.user_princ, password=self.realm.password("user")
57        )
58        self.user.refresh_from_db()
59        self.assertTrue(is_password_usable(self.user.password))

Kerberos Auth tests

def setUp(self):
16    def setUp(self):
17        self.source = KerberosSource.objects.create(
18            name="kerberos",
19            slug="kerberos",
20            realm=self.realm.realm,
21            sync_users=False,
22            sync_users_password=False,
23            password_login_update_internal_password=True,
24        )
25        self.user = User.objects.create(username=generate_id())
26        self.user.set_unusable_password()
27        self.user.save()
28        UserKerberosSourceConnection.objects.create(
29            source=self.source, user=self.user, identifier=self.realm.user_princ
30        )

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

def test_auth_username(self):
32    def test_auth_username(self):
33        """Test auth username"""
34        backend = KerberosBackend()
35        self.assertEqual(
36            backend.authenticate(
37                None, username=self.user.username, password=self.realm.password("user")
38            ),
39            self.user,
40        )

Test auth username

def test_auth_principal(self):
42    def test_auth_principal(self):
43        """Test auth principal"""
44        backend = KerberosBackend()
45        self.assertEqual(
46            backend.authenticate(
47                None, username=self.realm.user_princ, password=self.realm.password("user")
48            ),
49            self.user,
50        )

Test auth principal

def test_internal_password_update(self):
52    def test_internal_password_update(self):
53        """Test internal password update"""
54        backend = KerberosBackend()
55        backend.authenticate(
56            None, username=self.realm.user_princ, password=self.realm.password("user")
57        )
58        self.user.refresh_from_db()
59        self.assertTrue(is_password_usable(self.user.password))

Test internal password update