authentik.sources.kerberos.tests.utils

Kerberos Source test utils

 1"""Kerberos Source test utils"""
 2
 3import os
 4from copy import deepcopy
 5from time import sleep
 6
 7from k5test import realm
 8from rest_framework.test import APITestCase
 9
10
11class KerberosTestCase(APITestCase):
12    """Kerberos Test Case"""
13
14    @classmethod
15    def setUpClass(cls):
16        cls.realm = realm.K5Realm(start_kadmind=True)
17
18        cls.realm.http_princ = f"HTTP/testserver@{cls.realm.realm}"
19        cls.realm.http_keytab = os.path.join(cls.realm.tmpdir, "http_keytab")
20        cls.realm.addprinc(cls.realm.http_princ)
21        cls.realm.extract_keytab(cls.realm.http_princ, cls.realm.http_keytab)
22
23        cls._saved_env = deepcopy(os.environ)
24        for k, v in cls.realm.env.items():
25            os.environ[k] = v
26        # Wait for everything to start correctly
27        # Otherwise leads to flaky tests
28        sleep(5)
29
30    @classmethod
31    def tearDownClass(cls):
32        cls.realm.stop()
33        del cls.realm
34
35        for k in deepcopy(os.environ):
36            if k in cls._saved_env:
37                os.environ[k] = cls._saved_env[k]
38            else:
39                del os.environ[k]
40        cls._saved_env = None
class KerberosTestCase(rest_framework.test.APITestCase):
12class KerberosTestCase(APITestCase):
13    """Kerberos Test Case"""
14
15    @classmethod
16    def setUpClass(cls):
17        cls.realm = realm.K5Realm(start_kadmind=True)
18
19        cls.realm.http_princ = f"HTTP/testserver@{cls.realm.realm}"
20        cls.realm.http_keytab = os.path.join(cls.realm.tmpdir, "http_keytab")
21        cls.realm.addprinc(cls.realm.http_princ)
22        cls.realm.extract_keytab(cls.realm.http_princ, cls.realm.http_keytab)
23
24        cls._saved_env = deepcopy(os.environ)
25        for k, v in cls.realm.env.items():
26            os.environ[k] = v
27        # Wait for everything to start correctly
28        # Otherwise leads to flaky tests
29        sleep(5)
30
31    @classmethod
32    def tearDownClass(cls):
33        cls.realm.stop()
34        del cls.realm
35
36        for k in deepcopy(os.environ):
37            if k in cls._saved_env:
38                os.environ[k] = cls._saved_env[k]
39            else:
40                del os.environ[k]
41        cls._saved_env = None

Kerberos Test Case

@classmethod
def setUpClass(cls):
15    @classmethod
16    def setUpClass(cls):
17        cls.realm = realm.K5Realm(start_kadmind=True)
18
19        cls.realm.http_princ = f"HTTP/testserver@{cls.realm.realm}"
20        cls.realm.http_keytab = os.path.join(cls.realm.tmpdir, "http_keytab")
21        cls.realm.addprinc(cls.realm.http_princ)
22        cls.realm.extract_keytab(cls.realm.http_princ, cls.realm.http_keytab)
23
24        cls._saved_env = deepcopy(os.environ)
25        for k, v in cls.realm.env.items():
26            os.environ[k] = v
27        # Wait for everything to start correctly
28        # Otherwise leads to flaky tests
29        sleep(5)

Hook method for setting up class fixture before running tests in the class.

@classmethod
def tearDownClass(cls):
31    @classmethod
32    def tearDownClass(cls):
33        cls.realm.stop()
34        del cls.realm
35
36        for k in deepcopy(os.environ):
37            if k in cls._saved_env:
38                os.environ[k] = cls._saved_env[k]
39            else:
40                del os.environ[k]
41        cls._saved_env = None

Hook method for deconstructing the class fixture after running all tests in the class.