authentik.stages.user_logout.tests

logout tests

 1"""logout tests"""
 2
 3from django.urls import reverse
 4
 5from authentik.core.tests.utils import create_test_admin_user, create_test_flow
 6from authentik.flows.markers import StageMarker
 7from authentik.flows.models import FlowDesignation, FlowStageBinding
 8from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan
 9from authentik.flows.tests import FlowTestCase
10from authentik.flows.views.executor import SESSION_KEY_PLAN
11from authentik.stages.password import BACKEND_INBUILT
12from authentik.stages.password.stage import PLAN_CONTEXT_AUTHENTICATION_BACKEND
13from authentik.stages.user_logout.models import UserLogoutStage
14
15
16class TestUserLogoutStage(FlowTestCase):
17    """Logout tests"""
18
19    def setUp(self):
20        super().setUp()
21        self.user = create_test_admin_user()
22
23        self.flow = create_test_flow(FlowDesignation.AUTHENTICATION)
24        self.stage = UserLogoutStage.objects.create(name="logout")
25        self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2)
26
27    def test_valid_get(self):
28        """Test with a valid pending user and backend"""
29        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
30        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
31        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
32        session = self.client.session
33        session[SESSION_KEY_PLAN] = plan
34        session.save()
35
36        response = self.client.get(
37            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
38        )
39
40        self.assertEqual(response.status_code, 200)
41        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))
42
43    def test_valid_post(self):
44        """Test with a valid pending user and backend"""
45        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
46        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
47        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
48        session = self.client.session
49        session[SESSION_KEY_PLAN] = plan
50        session.save()
51
52        response = self.client.post(
53            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
54        )
55
56        self.assertEqual(response.status_code, 200)
57        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))
class TestUserLogoutStage(authentik.flows.tests.FlowTestCase):
17class TestUserLogoutStage(FlowTestCase):
18    """Logout tests"""
19
20    def setUp(self):
21        super().setUp()
22        self.user = create_test_admin_user()
23
24        self.flow = create_test_flow(FlowDesignation.AUTHENTICATION)
25        self.stage = UserLogoutStage.objects.create(name="logout")
26        self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2)
27
28    def test_valid_get(self):
29        """Test with a valid pending user and backend"""
30        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
31        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
32        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
33        session = self.client.session
34        session[SESSION_KEY_PLAN] = plan
35        session.save()
36
37        response = self.client.get(
38            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
39        )
40
41        self.assertEqual(response.status_code, 200)
42        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))
43
44    def test_valid_post(self):
45        """Test with a valid pending user and backend"""
46        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
47        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
48        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
49        session = self.client.session
50        session[SESSION_KEY_PLAN] = plan
51        session.save()
52
53        response = self.client.post(
54            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
55        )
56
57        self.assertEqual(response.status_code, 200)
58        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))

Logout tests

def setUp(self):
20    def setUp(self):
21        super().setUp()
22        self.user = create_test_admin_user()
23
24        self.flow = create_test_flow(FlowDesignation.AUTHENTICATION)
25        self.stage = UserLogoutStage.objects.create(name="logout")
26        self.binding = FlowStageBinding.objects.create(target=self.flow, stage=self.stage, order=2)

Hook method for setting up the test fixture before exercising it.

def test_valid_get(self):
28    def test_valid_get(self):
29        """Test with a valid pending user and backend"""
30        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
31        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
32        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
33        session = self.client.session
34        session[SESSION_KEY_PLAN] = plan
35        session.save()
36
37        response = self.client.get(
38            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
39        )
40
41        self.assertEqual(response.status_code, 200)
42        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))

Test with a valid pending user and backend

def test_valid_post(self):
44    def test_valid_post(self):
45        """Test with a valid pending user and backend"""
46        plan = FlowPlan(flow_pk=self.flow.pk.hex, bindings=[self.binding], markers=[StageMarker()])
47        plan.context[PLAN_CONTEXT_PENDING_USER] = self.user
48        plan.context[PLAN_CONTEXT_AUTHENTICATION_BACKEND] = BACKEND_INBUILT
49        session = self.client.session
50        session[SESSION_KEY_PLAN] = plan
51        session.save()
52
53        response = self.client.post(
54            reverse("authentik_api:flow-executor", kwargs={"flow_slug": self.flow.slug})
55        )
56
57        self.assertEqual(response.status_code, 200)
58        self.assertStageRedirects(response, reverse("authentik_core:root-redirect"))

Test with a valid pending user and backend