
* remove pyright Signed-off-by: Jens Langhammer <jens@goauthentik.io> * remove pylint Signed-off-by: Jens Langhammer <jens@goauthentik.io> * replace pylint with ruff Signed-off-by: Jens Langhammer <jens@goauthentik.io> * ruff fix Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix UP038 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix DJ012 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix default arg Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix UP031 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * rename stage type to view Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix DJ008 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix remaining upgrade Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix PLR2004 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix B904 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix PLW2901 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix remaining issues Signed-off-by: Jens Langhammer <jens@goauthentik.io> * prevent ruff from breaking the code Signed-off-by: Jens Langhammer <jens@goauthentik.io> * stages/prompt: refactor field building Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> * fix tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix lint Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fully remove isort Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io> Signed-off-by: Marc 'risson' Schmitt <marc.schmitt@risson.space> Co-authored-by: Marc 'risson' Schmitt <marc.schmitt@risson.space>
52 lines
2.0 KiB
Python
52 lines
2.0 KiB
Python
"""Test helpers"""
|
|
|
|
from json import loads
|
|
from typing import Any
|
|
|
|
from django.http.response import HttpResponse
|
|
from django.urls.base import reverse
|
|
from rest_framework.test import APITestCase
|
|
|
|
from authentik.core.models import User
|
|
from authentik.flows.challenge import ChallengeTypes
|
|
from authentik.flows.models import Flow
|
|
|
|
|
|
class FlowTestCase(APITestCase):
|
|
"""Helpers for testing flows and stages."""
|
|
|
|
def assertStageResponse(
|
|
self,
|
|
response: HttpResponse,
|
|
flow: Flow | None = None,
|
|
user: User | None = None,
|
|
**kwargs,
|
|
) -> dict[str, Any]:
|
|
"""Assert various attributes of a stage response"""
|
|
self.assertEqual(response.status_code, 200)
|
|
raw_response = loads(response.content.decode())
|
|
self.assertIsNotNone(raw_response["component"])
|
|
self.assertIsNotNone(raw_response["type"])
|
|
if flow:
|
|
self.assertIn("flow_info", raw_response)
|
|
self.assertEqual(raw_response["flow_info"]["background"], flow.background_url)
|
|
self.assertEqual(
|
|
raw_response["flow_info"]["cancel_url"], reverse("authentik_flows:cancel")
|
|
)
|
|
# We don't check the flow title since it will most likely go
|
|
# through ChallengeStageView.format_title() so might not match 1:1
|
|
# self.assertEqual(raw_response["flow_info"]["title"], flow.title)
|
|
self.assertIsNotNone(raw_response["flow_info"]["title"])
|
|
if user:
|
|
self.assertEqual(raw_response["pending_user"], user.username)
|
|
self.assertEqual(raw_response["pending_user_avatar"], user.avatar)
|
|
for key, expected in kwargs.items():
|
|
self.assertEqual(raw_response[key], expected)
|
|
return raw_response
|
|
|
|
def assertStageRedirects(self, response: HttpResponse, to: str) -> dict[str, Any]:
|
|
"""Wrapper around assertStageResponse that checks for a redirect"""
|
|
return self.assertStageResponse(
|
|
response, component="xak-flow-redirect", to=to, type=ChallengeTypes.REDIRECT.value
|
|
)
|