Browse Source

fix: get_subgroups now handles empty subGroups (#509)

pull/516/head
Nikolai Eugen Sandvik 4 months ago
parent
commit
5b838fb051
  1. 19
      src/keycloak/keycloak_admin.py
  2. 3
      tests/test_keycloak_admin.py

19
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

3
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")

Loading…
Cancel
Save