tests/e2e: add forward auth e2e test (#11374)

* add nginx forward_auth e2e tests

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

* add envoy

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

* cleanup

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

* remove even more duplicate code

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

* cleanup more

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

* add traefik static config

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

* more cleanup, don't generate dex config cause they support env variables

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

* use default dex entrypoint to use templating

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

* remove options that are always set as default

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

* fix

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

* fix compose flag

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

* add caddy

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

* merge python files

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

* use whoami api to check better

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

* fix envoy config

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

* set invalidation flow

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

* fix logout checks

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

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens L.
2024-10-16 18:01:59 +02:00
committed by GitHub
parent c4caef4c38
commit 89f251d559
24 changed files with 678 additions and 302 deletions

View File

@ -3,8 +3,6 @@
from json import loads
from time import sleep
from docker import DockerClient, from_env
from docker.models.containers import Container
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
@ -22,11 +20,8 @@ from tests.e2e.utils import SeleniumTestCase, retry
class TestProviderSAML(SeleniumTestCase):
"""test SAML Provider flow"""
container: Container
def setup_client(self, provider: SAMLProvider, force_post: bool = False) -> Container:
def setup_client(self, provider: SAMLProvider, force_post: bool = False):
"""Setup client saml-sp container which we test SAML against"""
client: DockerClient = from_env()
metadata_url = (
self.url(
"authentik_api:samlprovider-metadata",
@ -36,9 +31,8 @@ class TestProviderSAML(SeleniumTestCase):
)
if force_post:
metadata_url += f"&force_binding={SAML_BINDING_POST}"
container = client.containers.run(
self.run_container(
image="ghcr.io/beryju/saml-test-sp:1.1",
detach=True,
ports={
"9009": "9009",
},
@ -48,8 +42,6 @@ class TestProviderSAML(SeleniumTestCase):
"SP_METADATA_URL": metadata_url,
},
)
self.wait_for_container(container)
return container
@retry()
@apply_blueprint(
@ -85,7 +77,7 @@ class TestProviderSAML(SeleniumTestCase):
slug="authentik-saml",
provider=provider,
)
self.container = self.setup_client(provider)
self.setup_client(provider)
self.driver.get("http://localhost:9009")
self.login()
self.wait_for_url("http://localhost:9009/")
@ -153,7 +145,7 @@ class TestProviderSAML(SeleniumTestCase):
slug="authentik-saml",
provider=provider,
)
self.container = self.setup_client(provider)
self.setup_client(provider)
self.driver.get("http://localhost:9009")
self.login()
@ -236,7 +228,7 @@ class TestProviderSAML(SeleniumTestCase):
slug="authentik-saml",
provider=provider,
)
self.container = self.setup_client(provider, True)
self.setup_client(provider, True)
self.driver.get("http://localhost:9009")
self.login()
@ -319,7 +311,7 @@ class TestProviderSAML(SeleniumTestCase):
slug="authentik-saml",
provider=provider,
)
self.container = self.setup_client(provider)
self.setup_client(provider)
self.driver.get(
self.url(
"authentik_providers_saml:sso-init",
@ -397,7 +389,7 @@ class TestProviderSAML(SeleniumTestCase):
provider=provider,
)
PolicyBinding.objects.create(target=app, policy=negative_policy, order=0)
self.container = self.setup_client(provider)
self.setup_client(provider)
self.driver.get("http://localhost:9009/")
self.login()
@ -444,7 +436,7 @@ class TestProviderSAML(SeleniumTestCase):
slug="authentik-saml",
provider=provider,
)
self.container = self.setup_client(provider)
self.setup_client(provider)
self.driver.get("http://localhost:9009")
self.login()
self.wait_for_url("http://localhost:9009/")