authentik.tenants.tests.test_local_settings
Test Settings API
1"""Test Settings API""" 2 3from django.core.management import call_command 4from django.urls import reverse 5from rest_framework.test import APITestCase 6 7from authentik.core.tests.utils import create_test_admin_user 8from authentik.tenants.flags import Flag 9from authentik.tenants.utils import get_current_tenant 10 11 12class TestLocalSettingsAPI(APITestCase): 13 """Test settings API""" 14 15 def setUp(self): 16 super().setUp() 17 self.local_admin = create_test_admin_user() 18 self.tenant = get_current_tenant() 19 20 def tearDown(self): 21 super().tearDown() 22 self.tenant.flags = {} 23 self.tenant.save() 24 25 def test_settings_flags(self): 26 """Test settings API""" 27 self.tenant.flags = {} 28 self.tenant.save() 29 30 class _TestFlag(Flag[bool], key="tenants_test_flag_bool"): 31 32 default = False 33 visibility = "public" 34 35 self.client.force_login(self.local_admin) 36 response = self.client.patch( 37 reverse("authentik_api:tenant_settings"), 38 data={ 39 "flags": {"tenants_test_flag_bool": True}, 40 }, 41 ) 42 self.assertEqual(response.status_code, 200) 43 self.tenant.refresh_from_db() 44 self.assertEqual(self.tenant.flags["tenants_test_flag_bool"], True) 45 46 def test_settings_flags_incorrect(self): 47 """Test settings API""" 48 self.tenant.flags = {} 49 self.tenant.save() 50 51 class _TestFlag(Flag[bool], key="tenants_test_flag_incorrect"): 52 53 default = False 54 visibility = "public" 55 56 self.client.force_login(self.local_admin) 57 response = self.client.patch( 58 reverse("authentik_api:tenant_settings"), 59 data={ 60 "flags": {"tenants_test_flag_incorrect": 123}, 61 }, 62 ) 63 self.assertEqual(response.status_code, 400) 64 self.assertJSONEqual( 65 response.content, 66 {"flags": ["Value for flag tenants_test_flag_incorrect needs to be of type bool."]}, 67 ) 68 self.tenant.refresh_from_db() 69 self.assertEqual(self.tenant.flags, {}) 70 71 def test_settings_flags_system(self): 72 """Test settings API""" 73 self.tenant.flags = {} 74 self.tenant.save() 75 76 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 77 78 default = False 79 visibility = "system" 80 81 self.client.force_login(self.local_admin) 82 response = self.client.patch( 83 reverse("authentik_api:tenant_settings"), 84 data={ 85 "flags": {"tenants_test_flag_sys": 123}, 86 }, 87 ) 88 self.assertEqual(response.status_code, 200) 89 self.tenant.refresh_from_db() 90 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) 91 92 def test_settings_flags_system_empty_put(self): 93 """Test settings API""" 94 self.tenant.flags = {} 95 self.tenant.save() 96 97 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 98 99 default = False 100 visibility = "system" 101 102 self.client.force_login(self.local_admin) 103 response = self.client.patch( 104 reverse("authentik_api:tenant_settings"), 105 data={ 106 "flags": {}, 107 }, 108 ) 109 self.assertEqual(response.status_code, 200) 110 self.tenant.refresh_from_db() 111 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) 112 113 def test_command(self): 114 self.tenant.flags = {} 115 self.tenant.save() 116 117 call_command("set_flag", "foo", "true") 118 119 self.tenant.refresh_from_db() 120 self.assertTrue(self.tenant.flags["foo"])
class
TestLocalSettingsAPI(rest_framework.test.APITestCase):
13class TestLocalSettingsAPI(APITestCase): 14 """Test settings API""" 15 16 def setUp(self): 17 super().setUp() 18 self.local_admin = create_test_admin_user() 19 self.tenant = get_current_tenant() 20 21 def tearDown(self): 22 super().tearDown() 23 self.tenant.flags = {} 24 self.tenant.save() 25 26 def test_settings_flags(self): 27 """Test settings API""" 28 self.tenant.flags = {} 29 self.tenant.save() 30 31 class _TestFlag(Flag[bool], key="tenants_test_flag_bool"): 32 33 default = False 34 visibility = "public" 35 36 self.client.force_login(self.local_admin) 37 response = self.client.patch( 38 reverse("authentik_api:tenant_settings"), 39 data={ 40 "flags": {"tenants_test_flag_bool": True}, 41 }, 42 ) 43 self.assertEqual(response.status_code, 200) 44 self.tenant.refresh_from_db() 45 self.assertEqual(self.tenant.flags["tenants_test_flag_bool"], True) 46 47 def test_settings_flags_incorrect(self): 48 """Test settings API""" 49 self.tenant.flags = {} 50 self.tenant.save() 51 52 class _TestFlag(Flag[bool], key="tenants_test_flag_incorrect"): 53 54 default = False 55 visibility = "public" 56 57 self.client.force_login(self.local_admin) 58 response = self.client.patch( 59 reverse("authentik_api:tenant_settings"), 60 data={ 61 "flags": {"tenants_test_flag_incorrect": 123}, 62 }, 63 ) 64 self.assertEqual(response.status_code, 400) 65 self.assertJSONEqual( 66 response.content, 67 {"flags": ["Value for flag tenants_test_flag_incorrect needs to be of type bool."]}, 68 ) 69 self.tenant.refresh_from_db() 70 self.assertEqual(self.tenant.flags, {}) 71 72 def test_settings_flags_system(self): 73 """Test settings API""" 74 self.tenant.flags = {} 75 self.tenant.save() 76 77 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 78 79 default = False 80 visibility = "system" 81 82 self.client.force_login(self.local_admin) 83 response = self.client.patch( 84 reverse("authentik_api:tenant_settings"), 85 data={ 86 "flags": {"tenants_test_flag_sys": 123}, 87 }, 88 ) 89 self.assertEqual(response.status_code, 200) 90 self.tenant.refresh_from_db() 91 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) 92 93 def test_settings_flags_system_empty_put(self): 94 """Test settings API""" 95 self.tenant.flags = {} 96 self.tenant.save() 97 98 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 99 100 default = False 101 visibility = "system" 102 103 self.client.force_login(self.local_admin) 104 response = self.client.patch( 105 reverse("authentik_api:tenant_settings"), 106 data={ 107 "flags": {}, 108 }, 109 ) 110 self.assertEqual(response.status_code, 200) 111 self.tenant.refresh_from_db() 112 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False}) 113 114 def test_command(self): 115 self.tenant.flags = {} 116 self.tenant.save() 117 118 call_command("set_flag", "foo", "true") 119 120 self.tenant.refresh_from_db() 121 self.assertTrue(self.tenant.flags["foo"])
Test settings API
def
setUp(self):
16 def setUp(self): 17 super().setUp() 18 self.local_admin = create_test_admin_user() 19 self.tenant = get_current_tenant()
Hook method for setting up the test fixture before exercising it.
def
test_settings_flags(self):
26 def test_settings_flags(self): 27 """Test settings API""" 28 self.tenant.flags = {} 29 self.tenant.save() 30 31 class _TestFlag(Flag[bool], key="tenants_test_flag_bool"): 32 33 default = False 34 visibility = "public" 35 36 self.client.force_login(self.local_admin) 37 response = self.client.patch( 38 reverse("authentik_api:tenant_settings"), 39 data={ 40 "flags": {"tenants_test_flag_bool": True}, 41 }, 42 ) 43 self.assertEqual(response.status_code, 200) 44 self.tenant.refresh_from_db() 45 self.assertEqual(self.tenant.flags["tenants_test_flag_bool"], True)
Test settings API
def
test_settings_flags_incorrect(self):
47 def test_settings_flags_incorrect(self): 48 """Test settings API""" 49 self.tenant.flags = {} 50 self.tenant.save() 51 52 class _TestFlag(Flag[bool], key="tenants_test_flag_incorrect"): 53 54 default = False 55 visibility = "public" 56 57 self.client.force_login(self.local_admin) 58 response = self.client.patch( 59 reverse("authentik_api:tenant_settings"), 60 data={ 61 "flags": {"tenants_test_flag_incorrect": 123}, 62 }, 63 ) 64 self.assertEqual(response.status_code, 400) 65 self.assertJSONEqual( 66 response.content, 67 {"flags": ["Value for flag tenants_test_flag_incorrect needs to be of type bool."]}, 68 ) 69 self.tenant.refresh_from_db() 70 self.assertEqual(self.tenant.flags, {})
Test settings API
def
test_settings_flags_system(self):
72 def test_settings_flags_system(self): 73 """Test settings API""" 74 self.tenant.flags = {} 75 self.tenant.save() 76 77 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 78 79 default = False 80 visibility = "system" 81 82 self.client.force_login(self.local_admin) 83 response = self.client.patch( 84 reverse("authentik_api:tenant_settings"), 85 data={ 86 "flags": {"tenants_test_flag_sys": 123}, 87 }, 88 ) 89 self.assertEqual(response.status_code, 200) 90 self.tenant.refresh_from_db() 91 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False})
Test settings API
def
test_settings_flags_system_empty_put(self):
93 def test_settings_flags_system_empty_put(self): 94 """Test settings API""" 95 self.tenant.flags = {} 96 self.tenant.save() 97 98 class _TestFlag(Flag[bool], key="tenants_test_flag_sys"): 99 100 default = False 101 visibility = "system" 102 103 self.client.force_login(self.local_admin) 104 response = self.client.patch( 105 reverse("authentik_api:tenant_settings"), 106 data={ 107 "flags": {}, 108 }, 109 ) 110 self.assertEqual(response.status_code, 200) 111 self.tenant.refresh_from_db() 112 self.assertEqual(self.tenant.flags, {"setup": False, "tenants_test_flag_sys": False})
Test settings API