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)