authentik.endpoints.connectors.agent.tests.test_connector

 1from plistlib import PlistFormat, loads
 2
 3from defusedxml.lxml import fromstring
 4from django.test import RequestFactory
 5from rest_framework.test import APITestCase
 6
 7from authentik.endpoints.connectors.agent.models import AgentConnector, EnrollmentToken
 8from authentik.endpoints.facts import OSFamily
 9from authentik.lib.generators import generate_id
10
11
12class TestAgentConnector(APITestCase):
13
14    def setUp(self):
15        self.connector = AgentConnector.objects.create(
16            name=generate_id(),
17        )
18        self.token = EnrollmentToken.objects.create(name=generate_id(), connector=self.connector)
19        self.factory = RequestFactory()
20
21    def test_generate_mdm_macos(self):
22        request = self.factory.get("/")
23        res = self.connector.controller(self.connector).generate_mdm_config(
24            OSFamily.macOS, request, self.token
25        )
26        self.assertIsNotNone(res.validated_data)
27        data = loads(res.validated_data["config"], fmt=PlistFormat.FMT_XML)
28        self.assertEqual(data["PayloadContent"][0]["RegistrationToken"], self.token.key)
29        self.assertEqual(data["PayloadContent"][0]["URL"], "http://testserver/")
30
31    def test_generate_mdm_windows(self):
32        request = self.factory.get("/")
33        res = self.connector.controller(self.connector).generate_mdm_config(
34            OSFamily.windows, request, self.token
35        )
36        self.assertIsNotNone(res.validated_data)
37        config = res.validated_data["config"]
38        fromstring(f"<root>{config}</root>")
39        self.assertIn(self.token.key, config)
40        self.assertIn("http://testserver/", config)
class TestAgentConnector(rest_framework.test.APITestCase):
13class TestAgentConnector(APITestCase):
14
15    def setUp(self):
16        self.connector = AgentConnector.objects.create(
17            name=generate_id(),
18        )
19        self.token = EnrollmentToken.objects.create(name=generate_id(), connector=self.connector)
20        self.factory = RequestFactory()
21
22    def test_generate_mdm_macos(self):
23        request = self.factory.get("/")
24        res = self.connector.controller(self.connector).generate_mdm_config(
25            OSFamily.macOS, request, self.token
26        )
27        self.assertIsNotNone(res.validated_data)
28        data = loads(res.validated_data["config"], fmt=PlistFormat.FMT_XML)
29        self.assertEqual(data["PayloadContent"][0]["RegistrationToken"], self.token.key)
30        self.assertEqual(data["PayloadContent"][0]["URL"], "http://testserver/")
31
32    def test_generate_mdm_windows(self):
33        request = self.factory.get("/")
34        res = self.connector.controller(self.connector).generate_mdm_config(
35            OSFamily.windows, request, self.token
36        )
37        self.assertIsNotNone(res.validated_data)
38        config = res.validated_data["config"]
39        fromstring(f"<root>{config}</root>")
40        self.assertIn(self.token.key, config)
41        self.assertIn("http://testserver/", config)

Similar to TransactionTestCase, but use transaction.atomic() to achieve test isolation.

In most situations, TestCase should be preferred to TransactionTestCase as it allows faster execution. However, there are some situations where using TransactionTestCase might be necessary (e.g. testing some transactional behavior).

On database backends with no transaction support, TestCase behaves as TransactionTestCase.

def setUp(self):
15    def setUp(self):
16        self.connector = AgentConnector.objects.create(
17            name=generate_id(),
18        )
19        self.token = EnrollmentToken.objects.create(name=generate_id(), connector=self.connector)
20        self.factory = RequestFactory()

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

def test_generate_mdm_macos(self):
22    def test_generate_mdm_macos(self):
23        request = self.factory.get("/")
24        res = self.connector.controller(self.connector).generate_mdm_config(
25            OSFamily.macOS, request, self.token
26        )
27        self.assertIsNotNone(res.validated_data)
28        data = loads(res.validated_data["config"], fmt=PlistFormat.FMT_XML)
29        self.assertEqual(data["PayloadContent"][0]["RegistrationToken"], self.token.key)
30        self.assertEqual(data["PayloadContent"][0]["URL"], "http://testserver/")
def test_generate_mdm_windows(self):
32    def test_generate_mdm_windows(self):
33        request = self.factory.get("/")
34        res = self.connector.controller(self.connector).generate_mdm_config(
35            OSFamily.windows, request, self.token
36        )
37        self.assertIsNotNone(res.validated_data)
38        config = res.validated_data["config"]
39        fromstring(f"<root>{config}</root>")
40        self.assertIn(self.token.key, config)
41        self.assertIn("http://testserver/", config)