authentik.policies.tests.test_policies_api
Test policies API
1"""Test policies API""" 2 3from json import loads 4from unittest.mock import MagicMock, patch 5 6from django.urls import reverse 7from rest_framework.test import APITestCase 8 9from authentik.core.tests.utils import create_test_admin_user 10from authentik.policies.dummy.models import DummyPolicy 11from authentik.policies.types import PolicyResult 12 13 14class TestPoliciesAPI(APITestCase): 15 """Test policies API""" 16 17 def setUp(self) -> None: 18 super().setUp() 19 self.policy = DummyPolicy.objects.create(name="dummy", result=True) 20 self.user = create_test_admin_user() 21 self.client.force_login(self.user) 22 23 @patch("authentik.policies.dummy.models.DummyPolicy.passes") 24 def test_test_call(self, passes_mock: MagicMock): 25 """Test Policy's test endpoint""" 26 passes_mock.return_value = PolicyResult(True, "dummy") 27 response = self.client.post( 28 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 29 data={ 30 "user": self.user.pk, 31 }, 32 ) 33 body = loads(response.content.decode()) 34 self.assertEqual(body["passing"], True) 35 self.assertEqual(body["messages"], ["dummy"]) 36 self.assertEqual(body["log_messages"], []) 37 38 def test_test_call_invalid(self): 39 """Test invalid policy test""" 40 response = self.client.post( 41 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 42 data={}, 43 ) 44 self.assertEqual(response.status_code, 400) 45 response = self.client.post( 46 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 47 data={ 48 "user": self.user.pk + 1, 49 }, 50 ) 51 self.assertEqual(response.status_code, 400) 52 53 def test_types(self): 54 """Test Policy's types endpoint""" 55 response = self.client.get( 56 reverse("authentik_api:policy-types"), 57 ) 58 self.assertEqual(response.status_code, 200) 59 60 def test_cache_info(self): 61 """Test Policy's cache_info endpoint""" 62 response = self.client.get( 63 reverse("authentik_api:policy-cache-info"), 64 ) 65 self.assertEqual(response.status_code, 200) 66 67 def test_cache_clear(self): 68 """Test Policy's cache_clear endpoint""" 69 response = self.client.post( 70 reverse("authentik_api:policy-cache-clear"), 71 ) 72 self.assertEqual(response.status_code, 204)
class
TestPoliciesAPI(rest_framework.test.APITestCase):
15class TestPoliciesAPI(APITestCase): 16 """Test policies API""" 17 18 def setUp(self) -> None: 19 super().setUp() 20 self.policy = DummyPolicy.objects.create(name="dummy", result=True) 21 self.user = create_test_admin_user() 22 self.client.force_login(self.user) 23 24 @patch("authentik.policies.dummy.models.DummyPolicy.passes") 25 def test_test_call(self, passes_mock: MagicMock): 26 """Test Policy's test endpoint""" 27 passes_mock.return_value = PolicyResult(True, "dummy") 28 response = self.client.post( 29 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 30 data={ 31 "user": self.user.pk, 32 }, 33 ) 34 body = loads(response.content.decode()) 35 self.assertEqual(body["passing"], True) 36 self.assertEqual(body["messages"], ["dummy"]) 37 self.assertEqual(body["log_messages"], []) 38 39 def test_test_call_invalid(self): 40 """Test invalid policy test""" 41 response = self.client.post( 42 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 43 data={}, 44 ) 45 self.assertEqual(response.status_code, 400) 46 response = self.client.post( 47 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 48 data={ 49 "user": self.user.pk + 1, 50 }, 51 ) 52 self.assertEqual(response.status_code, 400) 53 54 def test_types(self): 55 """Test Policy's types endpoint""" 56 response = self.client.get( 57 reverse("authentik_api:policy-types"), 58 ) 59 self.assertEqual(response.status_code, 200) 60 61 def test_cache_info(self): 62 """Test Policy's cache_info endpoint""" 63 response = self.client.get( 64 reverse("authentik_api:policy-cache-info"), 65 ) 66 self.assertEqual(response.status_code, 200) 67 68 def test_cache_clear(self): 69 """Test Policy's cache_clear endpoint""" 70 response = self.client.post( 71 reverse("authentik_api:policy-cache-clear"), 72 ) 73 self.assertEqual(response.status_code, 204)
Test policies API
def
setUp(self) -> None:
18 def setUp(self) -> None: 19 super().setUp() 20 self.policy = DummyPolicy.objects.create(name="dummy", result=True) 21 self.user = create_test_admin_user() 22 self.client.force_login(self.user)
Hook method for setting up the test fixture before exercising it.
@patch('authentik.policies.dummy.models.DummyPolicy.passes')
def
test_test_call(self, passes_mock: unittest.mock.MagicMock):
24 @patch("authentik.policies.dummy.models.DummyPolicy.passes") 25 def test_test_call(self, passes_mock: MagicMock): 26 """Test Policy's test endpoint""" 27 passes_mock.return_value = PolicyResult(True, "dummy") 28 response = self.client.post( 29 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 30 data={ 31 "user": self.user.pk, 32 }, 33 ) 34 body = loads(response.content.decode()) 35 self.assertEqual(body["passing"], True) 36 self.assertEqual(body["messages"], ["dummy"]) 37 self.assertEqual(body["log_messages"], [])
Test Policy's test endpoint
def
test_test_call_invalid(self):
39 def test_test_call_invalid(self): 40 """Test invalid policy test""" 41 response = self.client.post( 42 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 43 data={}, 44 ) 45 self.assertEqual(response.status_code, 400) 46 response = self.client.post( 47 reverse("authentik_api:policy-test", kwargs={"pk": self.policy.pk}), 48 data={ 49 "user": self.user.pk + 1, 50 }, 51 ) 52 self.assertEqual(response.status_code, 400)
Test invalid policy test
def
test_types(self):
54 def test_types(self): 55 """Test Policy's types endpoint""" 56 response = self.client.get( 57 reverse("authentik_api:policy-types"), 58 ) 59 self.assertEqual(response.status_code, 200)
Test Policy's types endpoint