e2e: use dockercontroller to test proxy

This commit is contained in:
Jens Langhammer 2020-10-17 17:03:10 +02:00
parent f9cede7b31
commit 69f7b41044
3 changed files with 18 additions and 31 deletions

View File

@ -1,4 +1,5 @@
"""Proxy and Outpost e2e tests"""
from dataclasses import asdict
from sys import platform
from time import sleep
from typing import Any, Dict, Optional
@ -14,7 +15,14 @@ from e2e.utils import USER, SeleniumTestCase
from passbook import __version__
from passbook.core.models import Application
from passbook.flows.models import Flow
from passbook.outposts.models import Outpost, OutpostDeploymentType, OutpostType
from passbook.outposts.models import (
Outpost,
OutpostConfig,
OutpostDeploymentType,
OutpostType,
default_outpost_config,
)
from passbook.providers.proxy.controllers.docker import ProxyDockerController
from passbook.providers.proxy.models import ProxyProvider
@ -104,27 +112,6 @@ class TestProviderProxy(SeleniumTestCase):
class TestProviderProxyConnect(ChannelsLiveServerTestCase):
"""Test Proxy connectivity over websockets"""
proxy_container: Container
def tearDown(self) -> None:
self.proxy_container.kill()
super().tearDown()
def start_proxy(self, outpost: Outpost) -> Container:
"""Start proxy container based on outpost created"""
client: DockerClient = from_env()
container = client.containers.run(
image=f"beryju/passbook-proxy:{__version__}",
detach=True,
network_mode="host",
auto_remove=True,
environment={
"PASSBOOK_HOST": self.live_server_url,
"PASSBOOK_TOKEN": outpost.token.token_uuid.hex,
},
)
return container
def test_proxy_connectivity(self):
"""Test proxy connectivity over websocket"""
SeleniumTestCase().apply_default_data()
@ -144,13 +131,14 @@ class TestProviderProxyConnect(ChannelsLiveServerTestCase):
outpost: Outpost = Outpost.objects.create(
name="proxy_outpost",
type=OutpostType.PROXY,
deployment_type=OutpostDeploymentType.CUSTOM,
deployment_type=OutpostDeploymentType.DOCKER,
_config=asdict(
OutpostConfig(passbook_host=self.live_server_url, log_level="debug")
),
)
outpost.providers.add(proxy)
outpost.save()
self.proxy_container = self.start_proxy(outpost)
# Wait until outpost healthcheck succeeds
healthcheck_retries = 0
while healthcheck_retries < 50:
@ -164,3 +152,6 @@ class TestProviderProxyConnect(ChannelsLiveServerTestCase):
state = outpost.state
self.assertTrue(len(state), 1)
self.assertEqual(state[0].version, __version__)
# Make sure to delete the outpost to remove the container
outpost.delete()

View File

@ -35,11 +35,7 @@ class BaseController:
"""Call .up() but capture all log output and return it."""
with capture_logs() as logs:
self.up()
log_messages = []
for log in logs:
self.logger.debug(**log)
log_messages.append(f"{log['controller']}: {log['event']}")
return log_messages
return [f"{x['controller']}: {x['event']}" for x in logs]
def down(self):
"""Handler to delete everything we've created"""

View File

@ -118,7 +118,7 @@ class DockerController(BaseController):
try:
container, _ = self._get_container()
container.kill()
container.remove(force=True)
container.remove()
except DockerException as exc:
raise ControllerException from exc