authentik.endpoints.tests.test_tasks
1from unittest.mock import PropertyMock, patch 2 3from rest_framework.test import APITestCase 4 5from authentik.endpoints.controller import BaseController, Capabilities 6from authentik.endpoints.models import Connector 7from authentik.endpoints.tasks import endpoints_sync 8from authentik.lib.generators import generate_id 9 10 11class TestEndpointTasks(APITestCase): 12 def test_agent_sync(self): 13 class controller(BaseController): 14 def capabilities(self): 15 return [Capabilities.ENROLL_AUTOMATIC_API] 16 17 def sync_endpoints(self): 18 pass 19 20 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 21 connector = Connector.objects.create(name=generate_id()) 22 self.assertEqual(len(connector.schedule_specs), 1) 23 24 endpoints_sync.send(connector.pk).get_result(block=True) 25 26 def test_agent_no_sync(self): 27 class controller(BaseController): 28 def capabilities(self): 29 return [] 30 31 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 32 connector = Connector.objects.create(name=generate_id()) 33 self.assertEqual(len(connector.schedule_specs), 0) 34 35 endpoints_sync.send(connector.pk).get_result(block=True)
class
TestEndpointTasks(rest_framework.test.APITestCase):
12class TestEndpointTasks(APITestCase): 13 def test_agent_sync(self): 14 class controller(BaseController): 15 def capabilities(self): 16 return [Capabilities.ENROLL_AUTOMATIC_API] 17 18 def sync_endpoints(self): 19 pass 20 21 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 22 connector = Connector.objects.create(name=generate_id()) 23 self.assertEqual(len(connector.schedule_specs), 1) 24 25 endpoints_sync.send(connector.pk).get_result(block=True) 26 27 def test_agent_no_sync(self): 28 class controller(BaseController): 29 def capabilities(self): 30 return [] 31 32 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 33 connector = Connector.objects.create(name=generate_id()) 34 self.assertEqual(len(connector.schedule_specs), 0) 35 36 endpoints_sync.send(connector.pk).get_result(block=True)
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
test_agent_sync(self):
13 def test_agent_sync(self): 14 class controller(BaseController): 15 def capabilities(self): 16 return [Capabilities.ENROLL_AUTOMATIC_API] 17 18 def sync_endpoints(self): 19 pass 20 21 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 22 connector = Connector.objects.create(name=generate_id()) 23 self.assertEqual(len(connector.schedule_specs), 1) 24 25 endpoints_sync.send(connector.pk).get_result(block=True)
def
test_agent_no_sync(self):
27 def test_agent_no_sync(self): 28 class controller(BaseController): 29 def capabilities(self): 30 return [] 31 32 with patch.object(Connector, "controller", PropertyMock(return_value=controller)): 33 connector = Connector.objects.create(name=generate_id()) 34 self.assertEqual(len(connector.schedule_specs), 0) 35 36 endpoints_sync.send(connector.pk).get_result(block=True)