Files
authentik/tests/e2e/test_endpoints_flow.py
Jens L. a6775bc61e tests: refactor test harness to split apart a single file (#21391)
* re-instate previously flaky test

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* break up big file

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* move geoip data to subdir

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* i am but a weak man

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* fix ldap disconnect in testing

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* account for mismatched uid due to test server process

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
2026-04-05 22:12:52 +02:00

66 lines
2.4 KiB
Python

"""test default login flow"""
from authentik.blueprints.tests import apply_blueprint, reconcile_app
from authentik.crypto.apps import MANAGED_KEY
from authentik.crypto.models import CertificateKeyPair
from authentik.endpoints.connectors.agent.models import AgentConnector, EnrollmentToken
from authentik.endpoints.models import Device, EndpointStage, StageMode
from authentik.events.models import Event, EventAction
from authentik.flows.models import Flow, FlowStageBinding
from authentik.lib.generators import generate_id
from tests.decorators import retry
from tests.selenium import SeleniumTestCase
class TestEndpointsFlow(SeleniumTestCase):
"""test default login flow"""
@reconcile_app("authentik_crypto")
def setUp(self):
super().setUp()
self.connector = AgentConnector.objects.create(
name=generate_id(),
challenge_key=CertificateKeyPair.objects.filter(managed=MANAGED_KEY).first(),
)
self.enrollment_token = EnrollmentToken.objects.create(
name=generate_id(), connector=self.connector
)
@retry()
@apply_blueprint(
"default/flow-default-authentication-flow.yaml",
"default/flow-default-invalidation-flow.yaml",
)
def test_login(self):
"""test default login flow"""
rc, output = self.driver_container.exec_run(
["ak-sysd", "domains", "join", "ak", "-a", self.live_server_url],
user="root",
environment={"AK_SYS_INSECURE_ENV_TOKEN": self.enrollment_token.key},
)
self.assertEqual(rc, 0, str(output))
dev = Device.objects.first()
self.assertIsNotNone(dev)
stage = EndpointStage.objects.create(
name=generate_id(), connector=self.connector, mode=StageMode.REQUIRED
)
FlowStageBinding.objects.create(
target=Flow.objects.get(slug="default-authentication-flow"), stage=stage, order=0
)
self.driver.get(
self.url(
"authentik_core:if-flow",
flow_slug="default-authentication-flow",
)
)
self.login()
self.wait_for_url(self.if_user_url("/library"))
self.assert_user(self.user)
login_evt = Event.objects.filter(action=EventAction.LOGIN).first()
self.assertIsNotNone(login_evt)
self.assertEqual(login_evt.context["device"]["pk"], dev.pk.hex)