e2e: update for new saml-test-sp, pull image before run

This commit is contained in:
Jens Langhammer 2020-09-29 11:55:10 +02:00
parent 760352202e
commit e0d8189442
4 changed files with 30 additions and 12 deletions

View File

@ -51,6 +51,7 @@ class TestProviderOAuth2OIDC(SeleniumTestCase):
"""Setup client saml-sp container which we test SAML against""" """Setup client saml-sp container which we test SAML against"""
sleep(1) sleep(1)
client: DockerClient = from_env() client: DockerClient = from_env()
client.images.pull("beryju/oidc-test-client")
container = client.containers.run( container = client.containers.run(
image="beryju/oidc-test-client", image="beryju/oidc-test-client",
detach=True, detach=True,

View File

@ -39,6 +39,7 @@ class TestProviderProxy(SeleniumTestCase):
def start_proxy(self, outpost: Outpost) -> Container: def start_proxy(self, outpost: Outpost) -> Container:
"""Start proxy container based on outpost created""" """Start proxy container based on outpost created"""
client: DockerClient = from_env() client: DockerClient = from_env()
client.images.pull("beryju/oidc-test-client")
container = client.containers.run( container = client.containers.run(
image="beryju/passbook-proxy:latest", image="beryju/passbook-proxy:latest",
detach=True, detach=True,
@ -111,6 +112,7 @@ class TestProviderProxyConnect(ChannelsLiveServerTestCase):
def start_proxy(self, outpost: Outpost) -> Container: def start_proxy(self, outpost: Outpost) -> Container:
"""Start proxy container based on outpost created""" """Start proxy container based on outpost created"""
client: DockerClient = from_env() client: DockerClient = from_env()
client.images.pull("beryju/oidc-test-client")
container = client.containers.run( container = client.containers.run(
image="beryju/passbook-proxy:latest", image="beryju/passbook-proxy:latest",
detach=True, detach=True,

View File

@ -1,4 +1,5 @@
"""test SAML Provider flow""" """test SAML Provider flow"""
from json import loads
from sys import platform from sys import platform
from time import sleep from time import sleep
from unittest.case import skipUnless from unittest.case import skipUnless
@ -35,6 +36,7 @@ class TestProviderSAML(SeleniumTestCase):
def setup_client(self, provider: SAMLProvider) -> Container: def setup_client(self, provider: SAMLProvider) -> Container:
"""Setup client saml-sp container which we test SAML against""" """Setup client saml-sp container which we test SAML against"""
client: DockerClient = from_env() client: DockerClient = from_env()
client.images.pull("beryju/oidc-test-client")
container = client.containers.run( container = client.containers.run(
image="beryju/saml-test-sp", image="beryju/saml-test-sp",
detach=True, detach=True,
@ -92,10 +94,14 @@ class TestProviderSAML(SeleniumTestCase):
self.driver.find_element(By.ID, "id_password").send_keys(USER().username) self.driver.find_element(By.ID, "id_password").send_keys(USER().username)
self.driver.find_element(By.ID, "id_password").send_keys(Keys.ENTER) self.driver.find_element(By.ID, "id_password").send_keys(Keys.ENTER)
self.wait_for_url("http://localhost:9009/") self.wait_for_url("http://localhost:9009/")
self.assertEqual(
self.driver.find_element(By.CSS_SELECTOR, "pre").text, body = loads(self.driver.find_element(By.CSS_SELECTOR, "pre").text)
f"Hello, {USER().name}!",
) self.assertEqual(body["attr"]["cn"], [USER().name])
self.assertEqual(body["attr"]["displayName"], [USER().username])
self.assertEqual(body["attr"]["eduPersonPrincipalName"], [USER().email])
self.assertEqual(body["attr"]["mail"], [USER().email])
self.assertEqual(body["attr"]["uid"], [str(USER().pk)])
def test_sp_initiated_explicit(self): def test_sp_initiated_explicit(self):
"""test SAML Provider flow SP-initiated flow (explicit consent)""" """test SAML Provider flow SP-initiated flow (explicit consent)"""
@ -130,10 +136,14 @@ class TestProviderSAML(SeleniumTestCase):
sleep(1) sleep(1)
self.driver.find_element(By.CSS_SELECTOR, "[type=submit]").click() self.driver.find_element(By.CSS_SELECTOR, "[type=submit]").click()
self.wait_for_url("http://localhost:9009/") self.wait_for_url("http://localhost:9009/")
self.assertEqual(
self.driver.find_element(By.CSS_SELECTOR, "pre").text, body = loads(self.driver.find_element(By.CSS_SELECTOR, "pre").text)
f"Hello, {USER().name}!",
) self.assertEqual(body["attr"]["cn"], [USER().name])
self.assertEqual(body["attr"]["displayName"], [USER().username])
self.assertEqual(body["attr"]["eduPersonPrincipalName"], [USER().email])
self.assertEqual(body["attr"]["mail"], [USER().email])
self.assertEqual(body["attr"]["uid"], [str(USER().pk)])
def test_idp_initiated_implicit(self): def test_idp_initiated_implicit(self):
"""test SAML Provider flow IdP-initiated flow (implicit consent)""" """test SAML Provider flow IdP-initiated flow (implicit consent)"""
@ -169,10 +179,14 @@ class TestProviderSAML(SeleniumTestCase):
self.driver.find_element(By.ID, "id_password").send_keys(Keys.ENTER) self.driver.find_element(By.ID, "id_password").send_keys(Keys.ENTER)
sleep(1) sleep(1)
self.wait_for_url("http://localhost:9009/") self.wait_for_url("http://localhost:9009/")
self.assertEqual(
self.driver.find_element(By.CSS_SELECTOR, "pre").text, body = loads(self.driver.find_element(By.CSS_SELECTOR, "pre").text)
f"Hello, {USER().name}!",
) self.assertEqual(body["attr"]["cn"], [USER().name])
self.assertEqual(body["attr"]["displayName"], [USER().username])
self.assertEqual(body["attr"]["eduPersonPrincipalName"], [USER().email])
self.assertEqual(body["attr"]["mail"], [USER().email])
self.assertEqual(body["attr"]["uid"], [str(USER().pk)])
def test_sp_initiated_denied(self): def test_sp_initiated_denied(self):
"""test SAML Provider flow SP-initiated flow (Policy denies access)""" """test SAML Provider flow SP-initiated flow (Policy denies access)"""

View File

@ -47,6 +47,7 @@ class SeleniumTestCase(StaticLiveServerTestCase):
def _start_container(self, specs: Dict[str, Any]) -> Container: def _start_container(self, specs: Dict[str, Any]) -> Container:
client: DockerClient = from_env() client: DockerClient = from_env()
client.images.pull(specs['image'])
container = client.containers.run(**specs) container = client.containers.run(**specs)
if "healthcheck" not in specs: if "healthcheck" not in specs:
return container return container