authentik.endpoints.tests.test_api
1from django.urls import reverse 2from rest_framework.test import APITestCase 3 4from authentik.core.tests.utils import create_test_admin_user 5from authentik.endpoints.connectors.agent.models import AgentConnector 6from authentik.endpoints.models import StageMode 7from authentik.enterprise.endpoints.connectors.fleet.models import FleetConnector 8from authentik.lib.generators import generate_id 9 10 11class TestAPI(APITestCase): 12 def setUp(self): 13 self.user = create_test_admin_user() 14 self.client.force_login(self.user) 15 16 def test_endpoint_stage_agent(self): 17 connector = AgentConnector.objects.create(name=generate_id()) 18 res = self.client.post( 19 reverse("authentik_api:stages-endpoint-list"), 20 data={ 21 "name": generate_id(), 22 "connector": str(connector.pk), 23 "mode": StageMode.REQUIRED, 24 }, 25 ) 26 self.assertEqual(res.status_code, 201) 27 28 def test_endpoint_stage_fleet(self): 29 connector = FleetConnector.objects.create(name=generate_id()) 30 res = self.client.post( 31 reverse("authentik_api:stages-endpoint-list"), 32 data={ 33 "name": generate_id(), 34 "connector": str(connector.pk), 35 "mode": StageMode.REQUIRED, 36 }, 37 ) 38 self.assertEqual(res.status_code, 400) 39 self.assertJSONEqual( 40 res.content, {"connector": ["Selected connector is not compatible with this stage."]} 41 )
class
TestAPI(rest_framework.test.APITestCase):
12class TestAPI(APITestCase): 13 def setUp(self): 14 self.user = create_test_admin_user() 15 self.client.force_login(self.user) 16 17 def test_endpoint_stage_agent(self): 18 connector = AgentConnector.objects.create(name=generate_id()) 19 res = self.client.post( 20 reverse("authentik_api:stages-endpoint-list"), 21 data={ 22 "name": generate_id(), 23 "connector": str(connector.pk), 24 "mode": StageMode.REQUIRED, 25 }, 26 ) 27 self.assertEqual(res.status_code, 201) 28 29 def test_endpoint_stage_fleet(self): 30 connector = FleetConnector.objects.create(name=generate_id()) 31 res = self.client.post( 32 reverse("authentik_api:stages-endpoint-list"), 33 data={ 34 "name": generate_id(), 35 "connector": str(connector.pk), 36 "mode": StageMode.REQUIRED, 37 }, 38 ) 39 self.assertEqual(res.status_code, 400) 40 self.assertJSONEqual( 41 res.content, {"connector": ["Selected connector is not compatible with this stage."]} 42 )
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_endpoint_stage_agent(self):
17 def test_endpoint_stage_agent(self): 18 connector = AgentConnector.objects.create(name=generate_id()) 19 res = self.client.post( 20 reverse("authentik_api:stages-endpoint-list"), 21 data={ 22 "name": generate_id(), 23 "connector": str(connector.pk), 24 "mode": StageMode.REQUIRED, 25 }, 26 ) 27 self.assertEqual(res.status_code, 201)
def
test_endpoint_stage_fleet(self):
29 def test_endpoint_stage_fleet(self): 30 connector = FleetConnector.objects.create(name=generate_id()) 31 res = self.client.post( 32 reverse("authentik_api:stages-endpoint-list"), 33 data={ 34 "name": generate_id(), 35 "connector": str(connector.pk), 36 "mode": StageMode.REQUIRED, 37 }, 38 ) 39 self.assertEqual(res.status_code, 400) 40 self.assertJSONEqual( 41 res.content, {"connector": ["Selected connector is not compatible with this stage."]} 42 )