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:
Jens Langhammer 2021-10-03 23:04:59 +02:00
parent 036a4e86e2
commit 8a791c4eac
3 changed files with 17 additions and 19 deletions

View file

@ -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,

View file

@ -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,

View file

@ -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