From b8f69770ac7ab0dd5e2f892b5cb7773be72d8d90 Mon Sep 17 00:00:00 2001 From: Douglass Kirkley Date: Tue, 13 Jan 2026 11:51:45 -0500 Subject: [PATCH] fix: Proceed to next group in list if SubGroups is an empty slice Signed-off-by: Douglass Kirkley --- .../keycloak/adapter/gocloak_adapter_groups.go | 4 +++- .../adapter/gocloak_adapter_groups_test.go | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/pkg/client/keycloak/adapter/gocloak_adapter_groups.go b/pkg/client/keycloak/adapter/gocloak_adapter_groups.go index 8a7719ba..1b14b41b 100644 --- a/pkg/client/keycloak/adapter/gocloak_adapter_groups.go +++ b/pkg/client/keycloak/adapter/gocloak_adapter_groups.go @@ -106,7 +106,9 @@ func getGroupByName(groups []gocloak.Group, groupName string) *gocloak.Group { } if g.SubGroups != nil { - return getGroupByName(*g.SubGroups, groupName) + if group := getGroupByName(*g.SubGroups, groupName); group != nil { + return group + } } } diff --git a/pkg/client/keycloak/adapter/gocloak_adapter_groups_test.go b/pkg/client/keycloak/adapter/gocloak_adapter_groups_test.go index dbd2c805..b2aa878f 100644 --- a/pkg/client/keycloak/adapter/gocloak_adapter_groups_test.go +++ b/pkg/client/keycloak/adapter/gocloak_adapter_groups_test.go @@ -196,10 +196,20 @@ func TestGetGroupByName(t *testing.T) { name: "find group by name", groups: []gocloak.Group{ {Name: gocloak.StringP("group1")}, - {Name: gocloak.StringP("group2")}, + { + Name: gocloak.StringP("group2"), + SubGroups: &[]gocloak.Group{ + {Name: gocloak.StringP("child1")}, + }, + }, }, groupName: "group2", - want: &gocloak.Group{Name: gocloak.StringP("group2")}, + want: &gocloak.Group{ + Name: gocloak.StringP("group2"), + SubGroups: &[]gocloak.Group{ + {Name: gocloak.StringP("child1")}, + }, + }, }, { name: "find group in subgroups",