From e42c6c6fea3fde061ef46966fa011d4636f7b0b0 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Thu, 29 May 2025 16:21:48 +0200 Subject: [PATCH] cleanup, restart loop when we finished an operation Signed-off-by: Jens Langhammer --- tests/openid_conformance/README.md | 7 ---- tests/openid_conformance/test_conformance.py | 38 +++++++++++++------- 2 files changed, 26 insertions(+), 19 deletions(-) delete mode 100644 tests/openid_conformance/README.md diff --git a/tests/openid_conformance/README.md b/tests/openid_conformance/README.md deleted file mode 100644 index e352c96c8c..0000000000 --- a/tests/openid_conformance/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# #Test files for OpenID Conformance testing. - -These config files assume testing is being done using the [OpenID Conformance Suite](https://openid.net/certification/about-conformance-suite/), locally. - -See https://gitlab.com/openid/conformance-suite/-/wikis/Developers/Build-&-Run for running the conformance suite locally. - -Requires docker containers to be able to access the host via `host.docker.internal` and an entry in the hosts file that maps `host.docker.internal` to localhost. diff --git a/tests/openid_conformance/test_conformance.py b/tests/openid_conformance/test_conformance.py index 00cd034471..e240e57c79 100644 --- a/tests/openid_conformance/test_conformance.py +++ b/tests/openid_conformance/test_conformance.py @@ -1,11 +1,13 @@ from json import dumps from time import sleep + +from selenium.webdriver.common.by import By +from selenium.webdriver.support import expected_conditions as ec + from authentik.blueprints.tests import apply_blueprint, reconcile_app +from authentik.providers.oauth2.models import OAuth2Provider from tests.e2e.utils import SeleniumTestCase, retry from tests.openid_conformance.conformance import Conformance -from selenium.webdriver.common.by import By - -from selenium.webdriver.support import expected_conditions as ec class TestOpenIDConformance(SeleniumTestCase): @@ -26,27 +28,31 @@ class TestOpenIDConformance(SeleniumTestCase): @apply_blueprint("testing/oidc-conformance.yaml") def test_oidcc_basic_certification_test(self): test_plan_name = "oidcc-basic-certification-test-plan" - test_variant_config = { - "server_metadata": "discovery", - "client_registration": "static_client", - } + provider_a = OAuth2Provider.objects.get( + client_id="4054d882aff59755f2f279968b97ce8806a926e1" + ) + provider_b = OAuth2Provider.objects.get( + client_id="ad64aeaf1efe388ecf4d28fcc537e8de08bcae26" + ) test_plan_config = { "alias": "authentik", "description": "authentik", "server": { - "discoveryUrl": f"{self.live_server_url}/application/o/conformance/.well-known/openid-configuration" + "discoveryUrl": self.url( + "authentik_providers_oauth2:provider-info", application_slug="conformance" + ), }, "client": { "client_id": "4054d882aff59755f2f279968b97ce8806a926e1", - "client_secret": "4c7e4933009437fb486b5389d15b173109a0555dc47e0cc0949104f1925bcc6565351cb1dffd7e6818cf074f5bd50c210b565121a7328ee8bd40107fc4bbd867", + "client_secret": provider_a.client_secret, }, "client_secret_post": { "client_id": "4054d882aff59755f2f279968b97ce8806a926e1", - "client_secret": "4c7e4933009437fb486b5389d15b173109a0555dc47e0cc0949104f1925bcc6565351cb1dffd7e6818cf074f5bd50c210b565121a7328ee8bd40107fc4bbd867", + "client_secret": provider_a.client_secret, }, "client2": { "client_id": "ad64aeaf1efe388ecf4d28fcc537e8de08bcae26", - "client_secret": "ff2e34a5b04c99acaf7241e25a950e7f6134c86936923d8c698d8f38bd57647750d661069612c0ee55045e29fe06aa101804bdae38e8360647d595e771fea789", + "client_secret": provider_b.client_secret, }, "consent": {}, } @@ -55,7 +61,12 @@ class TestOpenIDConformance(SeleniumTestCase): self.conformance = Conformance(f"https://{self.host}:8443/", None, verify_ssl=False) test_plan = self.conformance.create_test_plan( - test_plan_name, dumps(test_plan_config), test_variant_config + test_plan_name, + dumps(test_plan_config), + { + "server_metadata": "discovery", + "client_registration": "static_client", + }, ) plan_id = test_plan["id"] for test in test_plan["modules"]: @@ -72,6 +83,7 @@ class TestOpenIDConformance(SeleniumTestCase): sleep(2) def run_test(self, module_id: str): + """Process instructions for a single test, navigate to browser URLs and take screenshots""" tested_browser_url = 0 uploaded_image = 0 while True: @@ -88,6 +100,7 @@ class TestOpenIDConformance(SeleniumTestCase): if len(browser_urls) > tested_browser_url: self.do_browser(browser_urls[tested_browser_url]) tested_browser_url += 1 + continue # Check if we need to upload any items upload_items = [x for x in test_log if "upload" in x] if len(upload_items) > uploaded_image: @@ -97,6 +110,7 @@ class TestOpenIDConformance(SeleniumTestCase): ) sleep(3) uploaded_image += 1 + continue if test_info["status"] in ["INTERRUPTED", "FINISHED"]: return sleep(0.1)