authentik.stages.user_delete.tests
delete tests
1"""delete tests""" 2 3from unittest.mock import patch 4 5from django.urls import reverse 6 7from authentik.core.models import User 8from authentik.core.tests.utils import create_test_admin_user, create_test_flow 9from authentik.flows.markers import StageMarker 10from authentik.flows.models import FlowDesignation, FlowStageBinding 11from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan 12from authentik.flows.tests import FlowTestCase 13from authentik.flows.tests.test_executor import TO_STAGE_RESPONSE_MOCK 14from authentik.flows.views.executor import SESSION_KEY_PLAN 15from authentik.stages.user_delete.models import UserDeleteStage 16 17 18class TestUserDeleteStage(FlowTestCase): 19 """Delete tests""" 20 21 def setUp(self): 22 super().setUp() 23 self.user = create_test_admin_user() 24 25 self.flow = create_test_flow(FlowDesignation.AUTHENTICATION) 26 self.stage = UserDeleteStage.objects.create(name="delete") 27 self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2) 28 29 @patch( 30 "authentik.flows.views.executor.to_stage_response", 31 TO_STAGE_RESPONSE_MOCK, 32 ) 33 def test_no_user(self): 34 """Test without user set""" 35 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 36 session = self.client.session 37 session[SESSION_KEY_PLAN] = plan 38 session.save() 39 40 response = self.client.get( 41 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 42 ) 43 self.assertStageResponse(response, self.flow, component="ak-stage-access-denied") 44 45 def test_user_delete_get(self): 46 """Test Form render""" 47 self.client.force_login(self.user) 48 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 49 session = self.client.session 50 session[SESSION_KEY_PLAN] = plan 51 session.save() 52 53 response = self.client.get( 54 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 55 ) 56 self.assertEqual(response.status_code, 200) 57 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 58 59 self.assertFalse(User.objects.filter(username=self.user.username).exists()) 60 61 def test_user_delete_post(self): 62 """Test Form render""" 63 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 64 plan.context[PLAN_CONTEXT_PENDING_USER] = self.user 65 session = self.client.session 66 session[SESSION_KEY_PLAN] = plan 67 session.save() 68 69 response = self.client.post( 70 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 71 ) 72 self.assertEqual(response.status_code, 200) 73 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 74 75 self.assertFalse(User.objects.filter(username=self.user.username).exists())
19class TestUserDeleteStage(FlowTestCase): 20 """Delete tests""" 21 22 def setUp(self): 23 super().setUp() 24 self.user = create_test_admin_user() 25 26 self.flow = create_test_flow(FlowDesignation.AUTHENTICATION) 27 self.stage = UserDeleteStage.objects.create(name="delete") 28 self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2) 29 30 @patch( 31 "authentik.flows.views.executor.to_stage_response", 32 TO_STAGE_RESPONSE_MOCK, 33 ) 34 def test_no_user(self): 35 """Test without user set""" 36 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 37 session = self.client.session 38 session[SESSION_KEY_PLAN] = plan 39 session.save() 40 41 response = self.client.get( 42 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 43 ) 44 self.assertStageResponse(response, self.flow, component="ak-stage-access-denied") 45 46 def test_user_delete_get(self): 47 """Test Form render""" 48 self.client.force_login(self.user) 49 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 50 session = self.client.session 51 session[SESSION_KEY_PLAN] = plan 52 session.save() 53 54 response = self.client.get( 55 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 56 ) 57 self.assertEqual(response.status_code, 200) 58 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 59 60 self.assertFalse(User.objects.filter(username=self.user.username).exists()) 61 62 def test_user_delete_post(self): 63 """Test Form render""" 64 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 65 plan.context[PLAN_CONTEXT_PENDING_USER] = self.user 66 session = self.client.session 67 session[SESSION_KEY_PLAN] = plan 68 session.save() 69 70 response = self.client.post( 71 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 72 ) 73 self.assertEqual(response.status_code, 200) 74 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 75 76 self.assertFalse(User.objects.filter(username=self.user.username).exists())
Delete tests
def
setUp(self):
22 def setUp(self): 23 super().setUp() 24 self.user = create_test_admin_user() 25 26 self.flow = create_test_flow(FlowDesignation.AUTHENTICATION) 27 self.stage = UserDeleteStage.objects.create(name="delete") 28 self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2)
Hook method for setting up the test fixture before exercising it.
@patch('authentik.flows.views.executor.to_stage_response', TO_STAGE_RESPONSE_MOCK)
def
test_no_user(self):
30 @patch( 31 "authentik.flows.views.executor.to_stage_response", 32 TO_STAGE_RESPONSE_MOCK, 33 ) 34 def test_no_user(self): 35 """Test without user set""" 36 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 37 session = self.client.session 38 session[SESSION_KEY_PLAN] = plan 39 session.save() 40 41 response = self.client.get( 42 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 43 ) 44 self.assertStageResponse(response, self.flow, component="ak-stage-access-denied")
Test without user set
def
test_user_delete_get(self):
46 def test_user_delete_get(self): 47 """Test Form render""" 48 self.client.force_login(self.user) 49 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 50 session = self.client.session 51 session[SESSION_KEY_PLAN] = plan 52 session.save() 53 54 response = self.client.get( 55 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 56 ) 57 self.assertEqual(response.status_code, 200) 58 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 59 60 self.assertFalse(User.objects.filter(username=self.user.username).exists())
Test Form render
def
test_user_delete_post(self):
62 def test_user_delete_post(self): 63 """Test Form render""" 64 plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()]) 65 plan.context[PLAN_CONTEXT_PENDING_USER] = self.user 66 session = self.client.session 67 session[SESSION_KEY_PLAN] = plan 68 session.save() 69 70 response = self.client.post( 71 reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug}) 72 ) 73 self.assertEqual(response.status_code, 200) 74 self.assertStageRedirects(response, reverse("authentik_core:root-redirect")) 75 76 self.assertFalse(User.objects.filter(username=self.user.username).exists())
Test Form render