17
17
18
18
from testcontainers .core .container import DockerContainer
19
19
from testcontainers .core .waiting_utils import wait_container_is_ready
20
+ from typing import Optional
20
21
21
22
22
23
class KeycloakContainer (DockerContainer ):
@@ -32,17 +33,17 @@ class KeycloakContainer(DockerContainer):
32
33
>>> with KeycloakContainer() as kc:
33
34
... keycloak = kc.get_client()
34
35
"""
35
- KEYCLOAK_USER = os .environ .get ("KEYCLOAK_USER" , "test" )
36
- KEYCLOAK_PASSWORD = os .environ .get ("KEYCLOAK_PASSWORD" , "test" )
37
-
38
- def __init__ (self , image = "jboss/keycloak:latest" ) -> None :
36
+ def __init__ (self , image = "jboss/keycloak:latest" , username : Optional [str ] = None ,
37
+ password : Optional [str ] = None , port : int = 8080 ) -> None :
39
38
super (KeycloakContainer , self ).__init__ (image = image )
40
- self .port_to_expose = 8080
39
+ self .username = username or os .environ .get ("KEYCLOAK_USER" , "test" )
40
+ self .password = password or os .environ .get ("KEYCLOAK_PASSWORD" , "test" )
41
+ self .port_to_expose = port
41
42
self .with_exposed_ports (self .port_to_expose )
42
43
43
44
def _configure (self ) -> None :
44
- self .with_env ("KEYCLOAK_USER" , self .KEYCLOAK_USER )
45
- self .with_env ("KEYCLOAK_PASSWORD" , self .KEYCLOAK_PASSWORD )
45
+ self .with_env ("KEYCLOAK_USER" , self .username )
46
+ self .with_env ("KEYCLOAK_PASSWORD" , self .password )
46
47
47
48
def get_url (self ) -> str :
48
49
host = self .get_container_host_ip ()
@@ -64,8 +65,8 @@ def start(self) -> "KeycloakContainer":
64
65
def get_client (self , ** kwargs ) -> KeycloakAdmin :
65
66
default_kwargs = dict (
66
67
server_url = "{}/auth/" .format (self .get_url ()),
67
- username = self .KEYCLOAK_USER ,
68
- password = self .KEYCLOAK_PASSWORD ,
68
+ username = self .username ,
69
+ password = self .password ,
69
70
realm_name = "master" ,
70
71
verify = True ,
71
72
)
0 commit comments