diff --git a/src/keycloak/keycloak_admin.py b/src/keycloak/keycloak_admin.py index eddaed9..1f01ce2 100644 --- a/src/keycloak/keycloak_admin.py +++ b/src/keycloak/keycloak_admin.py @@ -1317,6 +1317,8 @@ class KeycloakAdmin: :param group_id: The group id :type group_id: str + :param query: Additional query options + :type query: dict :return: Keycloak server response (GroupRepresentation) :rtype: list """ @@ -1344,14 +1346,15 @@ class KeycloakAdmin: :return: Keycloak server response (GroupRepresentation) :rtype: dict """ - for subgroup in group["subGroups"]: - if subgroup["path"] == path: - return subgroup - elif subgroup["subGroups"]: - for subgroup in group["subGroups"]: - result = self.get_subgroups(subgroup, path) - if result: - return result + if group.get("subGroups") is not None: + for subgroup in group["subGroups"]: + if subgroup["path"] == path: + return subgroup + elif subgroup.get("subGroups") is not None and subgroup["subGroups"]: + for subgroup in group["subGroups"]: + result = self.get_subgroups(subgroup, path) + if result: + return result # went through the tree without hits return None diff --git a/tests/test_keycloak_admin.py b/tests/test_keycloak_admin.py index a91c0a9..c6a14ba 100644 --- a/tests/test_keycloak_admin.py +++ b/tests/test_keycloak_admin.py @@ -690,7 +690,8 @@ def test_groups(admin: KeycloakAdmin, user: str): # Create 1 more subgroup subsubgroup_id_1 = admin.create_group(payload={"name": "subsubgroup-1"}, parent=subgroup_id_2) - main_group = admin.get_group(group_id=group_id) + main_group = admin.get_groups(query={"q": "%"})[0] + assert main_group["id"] == group_id # Test nested searches res = admin.get_subgroups(group=main_group, path="/main-group/subgroup-2/subsubgroup-1")