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())
class TestUserDeleteStage(authentik.flows.tests.FlowTestCase):
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