authentik.policies.tests.test_bindings_api
Test bindings API
1"""Test bindings API""" 2 3from django.urls import reverse 4from rest_framework.test import APITestCase 5 6from authentik.core.tests.utils import create_test_admin_user 7from authentik.policies.models import PolicyBindingModel 8 9 10class TestBindingsAPI(APITestCase): 11 """Test bindings API""" 12 13 def setUp(self) -> None: 14 super().setUp() 15 self.pbm = PolicyBindingModel.objects.create() 16 self.user = create_test_admin_user() 17 self.group = self.user.groups.first() 18 self.client.force_login(self.user) 19 20 def test_valid_binding(self): 21 """Test valid binding""" 22 response = self.client.post( 23 reverse("authentik_api:policybinding-list"), 24 data={"target": self.pbm.pk, "user": self.user.pk, "order": 0}, 25 ) 26 self.assertEqual(response.status_code, 201) 27 28 def test_invalid_too_much(self): 29 """Test invalid binding (too much)""" 30 response = self.client.post( 31 reverse("authentik_api:policybinding-list"), 32 data={ 33 "target": self.pbm.pk, 34 "user": self.user.pk, 35 "group": self.group.pk, 36 "order": 0, 37 }, 38 ) 39 self.assertJSONEqual( 40 response.content.decode(), 41 {"non_field_errors": ["Only one of 'group', 'policy', 'user' can be set."]}, 42 ) 43 44 def test_invalid_too_little(self): 45 """Test invalid binding (too little)""" 46 response = self.client.post( 47 reverse("authentik_api:policybinding-list"), 48 data={"target": self.pbm.pk, "order": 0}, 49 ) 50 self.assertJSONEqual( 51 response.content.decode(), 52 {"non_field_errors": ["One of 'group', 'policy', 'user' must be set."]}, 53 )
class
TestBindingsAPI(rest_framework.test.APITestCase):
11class TestBindingsAPI(APITestCase): 12 """Test bindings API""" 13 14 def setUp(self) -> None: 15 super().setUp() 16 self.pbm = PolicyBindingModel.objects.create() 17 self.user = create_test_admin_user() 18 self.group = self.user.groups.first() 19 self.client.force_login(self.user) 20 21 def test_valid_binding(self): 22 """Test valid binding""" 23 response = self.client.post( 24 reverse("authentik_api:policybinding-list"), 25 data={"target": self.pbm.pk, "user": self.user.pk, "order": 0}, 26 ) 27 self.assertEqual(response.status_code, 201) 28 29 def test_invalid_too_much(self): 30 """Test invalid binding (too much)""" 31 response = self.client.post( 32 reverse("authentik_api:policybinding-list"), 33 data={ 34 "target": self.pbm.pk, 35 "user": self.user.pk, 36 "group": self.group.pk, 37 "order": 0, 38 }, 39 ) 40 self.assertJSONEqual( 41 response.content.decode(), 42 {"non_field_errors": ["Only one of 'group', 'policy', 'user' can be set."]}, 43 ) 44 45 def test_invalid_too_little(self): 46 """Test invalid binding (too little)""" 47 response = self.client.post( 48 reverse("authentik_api:policybinding-list"), 49 data={"target": self.pbm.pk, "order": 0}, 50 ) 51 self.assertJSONEqual( 52 response.content.decode(), 53 {"non_field_errors": ["One of 'group', 'policy', 'user' must be set."]}, 54 )
Test bindings API
def
setUp(self) -> None:
14 def setUp(self) -> None: 15 super().setUp() 16 self.pbm = PolicyBindingModel.objects.create() 17 self.user = create_test_admin_user() 18 self.group = self.user.groups.first() 19 self.client.force_login(self.user)
Hook method for setting up the test fixture before exercising it.
def
test_valid_binding(self):
21 def test_valid_binding(self): 22 """Test valid binding""" 23 response = self.client.post( 24 reverse("authentik_api:policybinding-list"), 25 data={"target": self.pbm.pk, "user": self.user.pk, "order": 0}, 26 ) 27 self.assertEqual(response.status_code, 201)
Test valid binding
def
test_invalid_too_much(self):
29 def test_invalid_too_much(self): 30 """Test invalid binding (too much)""" 31 response = self.client.post( 32 reverse("authentik_api:policybinding-list"), 33 data={ 34 "target": self.pbm.pk, 35 "user": self.user.pk, 36 "group": self.group.pk, 37 "order": 0, 38 }, 39 ) 40 self.assertJSONEqual( 41 response.content.decode(), 42 {"non_field_errors": ["Only one of 'group', 'policy', 'user' can be set."]}, 43 )
Test invalid binding (too much)
def
test_invalid_too_little(self):
45 def test_invalid_too_little(self): 46 """Test invalid binding (too little)""" 47 response = self.client.post( 48 reverse("authentik_api:policybinding-list"), 49 data={"target": self.pbm.pk, "order": 0}, 50 ) 51 self.assertJSONEqual( 52 response.content.decode(), 53 {"non_field_errors": ["One of 'group', 'policy', 'user' must be set."]}, 54 )
Test invalid binding (too little)