From a0847ea988e8868dc6276aacc0c982e80f3f2412 Mon Sep 17 00:00:00 2001 From: Richard Nemeth Date: Sun, 25 May 2025 15:53:35 +0200 Subject: [PATCH] test: generalize for older versions --- test_keycloak_init.sh | 7 ++++++- tests/test_keycloak_admin.py | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/test_keycloak_init.sh b/test_keycloak_init.sh index fc3fcc7..2350c64 100755 --- a/test_keycloak_init.sh +++ b/test_keycloak_init.sh @@ -15,7 +15,12 @@ function keycloak_stop() { function keycloak_start() { echo "Starting keycloak docker container" PWD=$(pwd) - docker run -d --name unittest_keycloak -e KEYCLOAK_ADMIN="${KEYCLOAK_ADMIN}" -e KEYCLOAK_ADMIN_PASSWORD="${KEYCLOAK_ADMIN_PASSWORD}" -p "${KEYCLOAK_PORT}:8080" -v $PWD/tests/providers:/opt/keycloak/providers "${KEYCLOAK_DOCKER_IMAGE}" start-dev --features="admin-fine-grained-authz:v1,token-exchange:v1" + if [[ "$KEYCLOAK_DOCKER_IMAGE_TAG" == "22.0" || "$KEYCLOAK_DOCKER_IMAGE_TAG" == "23.0" ]]; then + KEYCLOAK_FEATURES="admin-fine-grained-authz,token-exchange" + else + KEYCLOAK_FEATURES="admin-fine-grained-authz:v1,token-exchange:v1" + fi + docker run -d --name unittest_keycloak -e KEYCLOAK_ADMIN="${KEYCLOAK_ADMIN}" -e KEYCLOAK_ADMIN_PASSWORD="${KEYCLOAK_ADMIN_PASSWORD}" -p "${KEYCLOAK_PORT}:8080" -v $PWD/tests/providers:/opt/keycloak/providers "${KEYCLOAK_DOCKER_IMAGE}" start-dev --features="${KEYCLOAK_FEATURES}" SECONDS=0 until curl --silent --output /dev/null localhost:$KEYCLOAK_PORT; do sleep 5; diff --git a/tests/test_keycloak_admin.py b/tests/test_keycloak_admin.py index 499841e..f9dd239 100644 --- a/tests/test_keycloak_admin.py +++ b/tests/test_keycloak_admin.py @@ -169,11 +169,15 @@ def test_realms(admin: KeycloakAdmin) -> None: # Create the same realm, should fail with pytest.raises(KeycloakPostError) as err: res = admin.create_realm(payload={"realm": "test"}) - assert err.match('400: b\'{"errorMessage":"Realm test already exists"}\'') + + assert ( + b"Realm test already exists" in err.value.error_message + or b"Conflict detected" in err.value.error_message + ) # Create the same realm, skip_exists true res = admin.create_realm(payload={"realm": "test"}, skip_exists=True) - assert res == {"errorMessage": "Realm test already exists"}, res + assert res in [{"errorMessage": "Realm test already exists"}, {"msg": "Already exists"}], res # Get a single realm res = admin.get_realm(realm_name="test") @@ -3623,11 +3627,15 @@ async def test_a_realms(admin: KeycloakAdmin) -> None: # Create the same realm, should fail with pytest.raises(KeycloakPostError) as err: res = await admin.a_create_realm(payload={"realm": "test"}) - assert err.match('400: b\'{"errorMessage":"Realm test already exists"}\'') + + assert ( + b"Realm test already exists" in err.value.error_message + or b"Conflict detected" in err.value.error_message + ) # Create the same realm, skip_exists true res = await admin.a_create_realm(payload={"realm": "test"}, skip_exists=True) - assert res == {"errorMessage": "Realm test already exists"}, res + assert res in [{"errorMessage": "Realm test already exists"}, {"msg": "Already exists"}], res # Get a single realm res = await admin.a_get_realm(realm_name="test")