tests/e2e: fallback to gh-master if outpost docker image cannot be found for PR
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
036a4e86e2
commit
8a791c4eac
|
@ -15,14 +15,7 @@ from authentik.flows.models import Flow
|
|||
from authentik.outposts.managed import MANAGED_OUTPOST
|
||||
from authentik.outposts.models import Outpost, OutpostType
|
||||
from authentik.providers.ldap.models import LDAPProvider
|
||||
from tests.e2e.utils import (
|
||||
USER,
|
||||
SeleniumTestCase,
|
||||
apply_migration,
|
||||
get_docker_tag,
|
||||
object_manager,
|
||||
retry,
|
||||
)
|
||||
from tests.e2e.utils import USER, SeleniumTestCase, apply_migration, object_manager, retry
|
||||
|
||||
|
||||
@skipUnless(platform.startswith("linux"), "requires local docker")
|
||||
|
@ -40,7 +33,7 @@ class TestProviderLDAP(SeleniumTestCase):
|
|||
"""Start ldap container based on outpost created"""
|
||||
client: DockerClient = from_env()
|
||||
container = client.containers.run(
|
||||
image=f"beryju.org/authentik/outpost-ldap:{get_docker_tag()}",
|
||||
image=self.get_container_image("beryju.org/authentik/outpost-ldap"),
|
||||
detach=True,
|
||||
network_mode="host",
|
||||
auto_remove=True,
|
||||
|
|
|
@ -16,14 +16,7 @@ from authentik.flows.models import Flow
|
|||
from authentik.outposts.models import DockerServiceConnection, Outpost, OutpostConfig, OutpostType
|
||||
from authentik.outposts.tasks import outpost_local_connection
|
||||
from authentik.providers.proxy.models import ProxyProvider
|
||||
from tests.e2e.utils import (
|
||||
USER,
|
||||
SeleniumTestCase,
|
||||
apply_migration,
|
||||
get_docker_tag,
|
||||
object_manager,
|
||||
retry,
|
||||
)
|
||||
from tests.e2e.utils import USER, SeleniumTestCase, apply_migration, object_manager, retry
|
||||
|
||||
|
||||
@skipUnless(platform.startswith("linux"), "requires local docker")
|
||||
|
@ -49,7 +42,7 @@ class TestProviderProxy(SeleniumTestCase):
|
|||
"""Start proxy container based on outpost created"""
|
||||
client: DockerClient = from_env()
|
||||
container = client.containers.run(
|
||||
image=f"beryju.org/authentik/outpost-proxy:{get_docker_tag()}",
|
||||
image=self.get_container_image("beryju.org/authentik/outpost-proxy"),
|
||||
detach=True,
|
||||
network_mode="host",
|
||||
auto_remove=True,
|
||||
|
|
|
@ -14,6 +14,7 @@ from django.db.migrations.operations.special import RunPython
|
|||
from django.test.testcases import TransactionTestCase
|
||||
from django.urls import reverse
|
||||
from docker import DockerClient, from_env
|
||||
from docker.errors import DockerException
|
||||
from docker.models.containers import Container
|
||||
from selenium import webdriver
|
||||
from selenium.common.exceptions import NoSuchElementException, TimeoutException, WebDriverException
|
||||
|
@ -66,9 +67,20 @@ class SeleniumTestCase(StaticLiveServerTestCase):
|
|||
if specs := self.get_container_specs():
|
||||
self.container = self._start_container(specs)
|
||||
|
||||
def get_container_image(self, base: str) -> str:
|
||||
"""Try to pull docker image based on git branch, fallback to master if not found."""
|
||||
client: DockerClient = from_env()
|
||||
image = f"{base}:gh-master"
|
||||
try:
|
||||
branch_image = f"{base}:{get_docker_tag()}"
|
||||
client.images.pull(branch_image)
|
||||
return branch_image
|
||||
except DockerException:
|
||||
client.images.pull(image)
|
||||
return image
|
||||
|
||||
def _start_container(self, specs: dict[str, Any]) -> Container:
|
||||
client: DockerClient = from_env()
|
||||
client.images.pull(specs["image"])
|
||||
container = client.containers.run(**specs)
|
||||
if "healthcheck" not in specs:
|
||||
return container
|
||||
|
|
Reference in a new issue