e2e: fix typo, log when docker healthcheck fails

This commit is contained in:
Jens Langhammer 2020-08-14 18:09:49 +02:00
parent 45df127f18
commit b4fc32afac
6 changed files with 25 additions and 2 deletions

View File

@ -4,6 +4,7 @@ from time import sleep
from django.test import override_settings from django.test import override_settings
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.support import expected_conditions as ec
from structlog import get_logger
from docker import DockerClient, from_env from docker import DockerClient, from_env
from docker.models.containers import Container from docker.models.containers import Container
@ -18,6 +19,8 @@ from passbook.stages.prompt.models import FieldTypes, Prompt, PromptStage
from passbook.stages.user_login.models import UserLoginStage from passbook.stages.user_login.models import UserLoginStage
from passbook.stages.user_write.models import UserWriteStage from passbook.stages.user_write.models import UserWriteStage
LOGGER = get_logger()
class TestFlowsEnroll(SeleniumTestCase): class TestFlowsEnroll(SeleniumTestCase):
"""Test Enroll flow""" """Test Enroll flow"""
@ -30,7 +33,7 @@ class TestFlowsEnroll(SeleniumTestCase):
"""Setup test IdP container""" """Setup test IdP container"""
client: DockerClient = from_env() client: DockerClient = from_env()
container = client.containers.run( container = client.containers.run(
image="mailhog/mailhog:v.1.0.1", image="mailhog/mailhog:v1.0.1",
detach=True, detach=True,
network_mode="host", network_mode="host",
auto_remove=True, auto_remove=True,
@ -45,6 +48,7 @@ class TestFlowsEnroll(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def tearDown(self): def tearDown(self):

View File

@ -4,6 +4,7 @@ from time import sleep
from oauth2_provider.generators import generate_client_id, generate_client_secret from oauth2_provider.generators import generate_client_id, generate_client_secret
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from structlog import get_logger
from docker import DockerClient, from_env from docker import DockerClient, from_env
from docker.models.containers import Container from docker.models.containers import Container
@ -15,6 +16,8 @@ from passbook.policies.expression.models import ExpressionPolicy
from passbook.policies.models import PolicyBinding from passbook.policies.models import PolicyBinding
from passbook.providers.oauth.models import OAuth2Provider from passbook.providers.oauth.models import OAuth2Provider
LOGGER = get_logger()
class TestProviderOAuth(SeleniumTestCase): class TestProviderOAuth(SeleniumTestCase):
"""test OAuth Provider flow""" """test OAuth Provider flow"""
@ -61,6 +64,7 @@ class TestProviderOAuth(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def tearDown(self): def tearDown(self):

View File

@ -7,6 +7,7 @@ from oidc_provider.models import Client, ResponseType
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.support import expected_conditions as ec
from structlog import get_logger
from docker import DockerClient, from_env from docker import DockerClient, from_env
from docker.models.containers import Container from docker.models.containers import Container
@ -18,6 +19,8 @@ from passbook.policies.expression.models import ExpressionPolicy
from passbook.policies.models import PolicyBinding from passbook.policies.models import PolicyBinding
from passbook.providers.oidc.models import OpenIDProvider from passbook.providers.oidc.models import OpenIDProvider
LOGGER = get_logger()
class TestProviderOIDC(SeleniumTestCase): class TestProviderOIDC(SeleniumTestCase):
"""test OpenID Provider flow""" """test OpenID Provider flow"""
@ -63,6 +66,7 @@ class TestProviderOIDC(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def tearDown(self): def tearDown(self):

View File

@ -3,6 +3,7 @@ from time import sleep
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from structlog import get_logger
from docker import DockerClient, from_env from docker import DockerClient, from_env
from docker.models.containers import Container from docker.models.containers import Container
@ -19,6 +20,8 @@ from passbook.providers.saml.models import (
SAMLProvider, SAMLProvider,
) )
LOGGER = get_logger()
class TestProviderSAML(SeleniumTestCase): class TestProviderSAML(SeleniumTestCase):
"""test SAML Provider flow""" """test SAML Provider flow"""
@ -54,6 +57,7 @@ class TestProviderSAML(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def tearDown(self): def tearDown(self):

View File

@ -4,6 +4,7 @@ from time import sleep
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.support import expected_conditions as ec
from structlog import get_logger
from docker import DockerClient, from_env from docker import DockerClient, from_env
from docker.models.containers import Container from docker.models.containers import Container
@ -13,6 +14,8 @@ from passbook.crypto.models import CertificateKeyPair
from passbook.flows.models import Flow from passbook.flows.models import Flow
from passbook.sources.saml.models import SAMLBindingTypes, SAMLSource from passbook.sources.saml.models import SAMLBindingTypes, SAMLSource
LOGGER = get_logger()
IDP_CERT = """-----BEGIN CERTIFICATE----- IDP_CERT = """-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
@ -76,7 +79,7 @@ class TestSourceSAML(SeleniumTestCase):
"""Setup test IdP container""" """Setup test IdP container"""
client: DockerClient = from_env() client: DockerClient = from_env()
container = client.containers.run( container = client.containers.run(
image="kristophjunge/test-saml-idp", image="kristophjunge/test-saml-idp:1.15",
detach=True, detach=True,
network_mode="host", network_mode="host",
auto_remove=True, auto_remove=True,
@ -97,6 +100,7 @@ class TestSourceSAML(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def tearDown(self): def tearDown(self):

View File

@ -6,6 +6,7 @@ from oauth2_provider.generators import generate_client_secret
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as ec from selenium.webdriver.support import expected_conditions as ec
from structlog import get_logger
from yaml import safe_dump from yaml import safe_dump
from docker import DockerClient, from_env from docker import DockerClient, from_env
@ -17,6 +18,7 @@ from passbook.sources.oauth.models import OAuthSource
TOKEN_URL = "http://127.0.0.1:5556/dex/token" TOKEN_URL = "http://127.0.0.1:5556/dex/token"
CONFIG_PATH = "/tmp/dex.yml" CONFIG_PATH = "/tmp/dex.yml"
LOGGER = get_logger()
class TestSourceOAuth(SeleniumTestCase): class TestSourceOAuth(SeleniumTestCase):
@ -86,6 +88,7 @@ class TestSourceOAuth(SeleniumTestCase):
status = container.attrs.get("State", {}).get("Health", {}).get("Status") status = container.attrs.get("State", {}).get("Health", {}).get("Status")
if status == "healthy": if status == "healthy":
return container return container
LOGGER.info("Container failed healthcheck")
sleep(1) sleep(1)
def create_objects(self): def create_objects(self):