stages: fix stage unittests
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -289,7 +289,11 @@ class TestFlowExecutor(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_reevaluate_keep(self): | ||||
| @ -366,7 +370,11 @@ class TestFlowExecutor(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_reevaluate_remove_consecutive(self): | ||||
| @ -458,7 +466,11 @@ class TestFlowExecutor(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_stageview_user_identifier(self): | ||||
|  | ||||
| @ -194,6 +194,7 @@ class TestAuthorize(OAuthTestCase): | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|                 "to": f"foo://localhost?code={code.code}&state={state}", | ||||
|             }, | ||||
| @ -232,6 +233,7 @@ class TestAuthorize(OAuthTestCase): | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|                 "to": ( | ||||
|                     f"http://localhost#access_token={token.access_token}" | ||||
|  | ||||
| @ -4,6 +4,7 @@ from django.urls import reverse | ||||
| from django.utils.encoding import force_str | ||||
|  | ||||
| from authentik.core.models import User | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.markers import StageMarker | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.flows.planner import FlowPlan | ||||
| @ -54,5 +55,9 @@ class TestCaptchaStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
| @ -7,6 +7,7 @@ from django.utils.encoding import force_str | ||||
|  | ||||
| from authentik.core.models import Application, User | ||||
| from authentik.core.tasks import clean_expired_models | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.markers import StageMarker | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.flows.planner import PLAN_CONTEXT_APPLICATION, FlowPlan | ||||
| @ -51,7 +52,11 @@ class TestConsentStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         self.assertFalse(UserConsent.objects.filter(user=self.user).exists()) | ||||
|  | ||||
| @ -82,7 +87,11 @@ class TestConsentStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         self.assertTrue( | ||||
|             UserConsent.objects.filter( | ||||
| @ -119,7 +128,11 @@ class TestConsentStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         self.assertTrue( | ||||
|             UserConsent.objects.filter( | ||||
|  | ||||
| @ -4,6 +4,7 @@ from django.urls import reverse | ||||
| from django.utils.encoding import force_str | ||||
|  | ||||
| from authentik.core.models import User | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.stages.dummy.models import DummyStage | ||||
|  | ||||
| @ -45,5 +46,9 @@ class TestDummyStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
| @ -8,6 +8,7 @@ from django.utils.encoding import force_str | ||||
| from django.utils.http import urlencode | ||||
|  | ||||
| from authentik.core.models import Token, User | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.markers import StageMarker | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan | ||||
| @ -133,7 +134,11 @@ class TestEmailStage(TestCase): | ||||
|             self.assertEqual(response.status_code, 200) | ||||
|             self.assertJSONEqual( | ||||
|                 force_str(response.content), | ||||
|                 {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|                 { | ||||
|                     "component": "xak-flow-redirect", | ||||
|                     "to": reverse("authentik_core:root-redirect"), | ||||
|                     "type": ChallengeTypes.REDIRECT.value, | ||||
|                 }, | ||||
|             ) | ||||
|  | ||||
|             session = self.client.session | ||||
|  | ||||
| @ -86,6 +86,7 @@ class IdentificationStageView(ChallengeStageView): | ||||
|             data={ | ||||
|                 "type": ChallengeTypes.NATIVE.value, | ||||
|                 "primary_action": _("Log in"), | ||||
|                 "component": "ak-stage-identification", | ||||
|                 "user_fields": current_stage.user_fields, | ||||
|             } | ||||
|         ) | ||||
|  | ||||
| @ -53,7 +53,11 @@ class TestIdentificationStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_invalid_with_username(self): | ||||
| @ -118,8 +122,9 @@ class TestIdentificationStage(TestCase): | ||||
|                         "icon_url": "/static/authentik/sources/.svg", | ||||
|                         "name": "test", | ||||
|                         "challenge": { | ||||
|                             "component": "xak-flow-redirect", | ||||
|                             "to": "/source/oauth/login/test/", | ||||
|                             "type": "redirect", | ||||
|                             "type": ChallengeTypes.REDIRECT.value, | ||||
|                         }, | ||||
|                     } | ||||
|                 ], | ||||
| @ -162,8 +167,9 @@ class TestIdentificationStage(TestCase): | ||||
|                 "sources": [ | ||||
|                     { | ||||
|                         "challenge": { | ||||
|                             "component": "xak-flow-redirect", | ||||
|                             "to": "/source/oauth/login/test/", | ||||
|                             "type": "redirect", | ||||
|                             "type": ChallengeTypes.REDIRECT.value, | ||||
|                         }, | ||||
|                         "icon_url": "/static/authentik/sources/.svg", | ||||
|                         "name": "test", | ||||
|  | ||||
| @ -89,7 +89,11 @@ class TestUserLoginStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|         self.stage.continue_flow_without_invitation = False | ||||
| @ -123,7 +127,11 @@ class TestUserLoginStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_with_invitation_prompt_data(self): | ||||
| @ -154,7 +162,11 @@ class TestUserLoginStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         self.assertFalse(Invitation.objects.filter(pk=invite.pk)) | ||||
|  | ||||
|  | ||||
| @ -118,7 +118,11 @@ class TestPasswordStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_invalid_password(self): | ||||
|  | ||||
| @ -51,9 +51,11 @@ class PromptResponseChallenge(ChallengeResponse): | ||||
|     component = CharField(default="ak-stage-prompt") | ||||
|  | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         stage: PromptStage = kwargs.pop("stage", None) | ||||
|         plan: FlowPlan = kwargs.pop("plan", None) | ||||
|         super().__init__(*args, **kwargs) | ||||
|         self.stage: PromptStage = kwargs.pop("stage", None) | ||||
|         self.plan: FlowPlan = kwargs.pop("plan", None) | ||||
|         self.stage = stage | ||||
|         self.plan = plan | ||||
|         if not self.stage: | ||||
|             return | ||||
|         # list() is called so we only load the fields once | ||||
|  | ||||
| @ -6,6 +6,7 @@ from django.urls import reverse | ||||
| from django.utils.encoding import force_str | ||||
|  | ||||
| from authentik.core.models import User | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.markers import StageMarker | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.flows.planner import FlowPlan | ||||
| @ -167,7 +168,11 @@ class TestPromptStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|         # Check that valid data has been saved | ||||
|  | ||||
| @ -75,7 +75,11 @@ class TestUserDeleteStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|         self.assertFalse(User.objects.filter(username=self.username).exists()) | ||||
|  | ||||
| @ -49,7 +49,11 @@ class TestUserLoginStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
|     def test_expiry(self): | ||||
| @ -70,7 +74,11 @@ class TestUserLoginStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         self.assertNotEqual(list(self.client.session.keys()), []) | ||||
|         sleep(3) | ||||
|  | ||||
| @ -4,6 +4,7 @@ from django.urls import reverse | ||||
| from django.utils.encoding import force_str | ||||
|  | ||||
| from authentik.core.models import User | ||||
| from authentik.flows.challenge import ChallengeTypes | ||||
| from authentik.flows.markers import StageMarker | ||||
| from authentik.flows.models import Flow, FlowDesignation, FlowStageBinding | ||||
| from authentik.flows.planner import PLAN_CONTEXT_PENDING_USER, FlowPlan | ||||
| @ -48,5 +49,9 @@ class TestUserLogoutStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|  | ||||
| @ -60,7 +60,11 @@ class TestUserWriteStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         user_qs = User.objects.filter( | ||||
|             username=plan.context[PLAN_CONTEXT_PROMPT]["username"] | ||||
| @ -97,7 +101,11 @@ class TestUserWriteStage(TestCase): | ||||
|         self.assertEqual(response.status_code, 200) | ||||
|         self.assertJSONEqual( | ||||
|             force_str(response.content), | ||||
|             {"to": reverse("authentik_core:root-redirect"), "type": "redirect"}, | ||||
|             { | ||||
|                 "component": "xak-flow-redirect", | ||||
|                 "to": reverse("authentik_core:root-redirect"), | ||||
|                 "type": ChallengeTypes.REDIRECT.value, | ||||
|             }, | ||||
|         ) | ||||
|         user_qs = User.objects.filter( | ||||
|             username=plan.context[PLAN_CONTEXT_PROMPT]["username"] | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer