Skip to content

Commit bf07954

Browse files
committed
Fixed Keycloak testcontainer for latest version v26.1.0
1 parent 9317736 commit bf07954

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

modules/keycloak/testcontainers/keycloak/__init__.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717

1818
from keycloak import KeycloakAdmin
1919
from testcontainers.core.container import DockerContainer
20-
from testcontainers.core.waiting_utils import wait_container_is_ready, wait_for_logs
21-
22-
_DEFAULT_DEV_COMMAND = "start-dev"
20+
from testcontainers.core.waiting_utils import wait_container_is_ready
2321

2422

2523
class KeycloakContainer(DockerContainer):
2624
has_realm_imports = False
25+
# Since Keycloak v26.0.0
26+
# See: https://www.keycloak.org/server/all-config#category-bootstrap_admin
27+
ADMIN_USERNAME_ENVIRONMENT_VARIABLE = "KC_BOOTSTRAP_ADMIN_USERNAME"
28+
ADMIN_PASSWORD_ENVIRONMENT_VARIABLE = "KC_BOOTSTRAP_ADMIN_PASSWORD"
2729

2830
"""
2931
Keycloak container.
@@ -46,19 +48,19 @@ def __init__(
4648
password: Optional[str] = None,
4749
port: int = 8080,
4850
management_port: int = 9000,
49-
cmd: Optional[str] = _DEFAULT_DEV_COMMAND,
51+
cmd: Optional[str] = "start-dev",
5052
) -> None:
5153
super().__init__(image=image)
52-
self.username = username or os.environ.get("KEYCLOAK_ADMIN", "test")
53-
self.password = password or os.environ.get("KEYCLOAK_ADMIN_PASSWORD", "test")
54+
self.username = username or os.environ.get(self.ADMIN_USERNAME_ENVIRONMENT_VARIABLE, "test")
55+
self.password = password or os.environ.get(self.ADMIN_PASSWORD_ENVIRONMENT_VARIABLE, "test")
5456
self.port = port
5557
self.management_port = management_port
5658
self.with_exposed_ports(self.port, self.management_port)
5759
self.cmd = cmd
5860

5961
def _configure(self) -> None:
60-
self.with_env("KEYCLOAK_ADMIN", self.username)
61-
self.with_env("KEYCLOAK_ADMIN_PASSWORD", self.password)
62+
self.with_env(self.ADMIN_USERNAME_ENVIRONMENT_VARIABLE, self.username)
63+
self.with_env(self.ADMIN_PASSWORD_ENVIRONMENT_VARIABLE, self.password)
6264
# Enable health checks
6365
# see: https://www.keycloak.org/server/health#_relevant_options
6466
self.with_env("KC_HEALTH_ENABLED", "true")
@@ -88,8 +90,6 @@ def _readiness_probe(self) -> None:
8890
except requests.exceptions.ConnectionError:
8991
response = requests.get(f"{self.get_url()}/health/ready", timeout=1)
9092
response.raise_for_status()
91-
if _DEFAULT_DEV_COMMAND in self._command:
92-
wait_for_logs(self, "Added user .* to realm .*")
9393

9494
def start(self) -> "KeycloakContainer":
9595
super().start()

modules/keycloak/tests/test_keycloak.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from testcontainers.keycloak import KeycloakContainer
33

44

5-
@pytest.mark.parametrize("image_version", ["25.0", "24.0.1", "18.0"])
5+
@pytest.mark.parametrize("image_version", ["latest", "26.0.0"])
66
def test_docker_run_keycloak(image_version: str):
77
with KeycloakContainer(f"quay.io/keycloak/keycloak:{image_version}") as keycloak_admin:
88
assert keycloak_admin.get_client().users_count() == 1

0 commit comments

Comments
 (0)