Skip to content

Commit

Permalink
Merge pull request #6576 from DilshanSenarath/discoverable-apps-fix-2
Browse files Browse the repository at this point in the history
Add a limit for the group listing query
  • Loading branch information
DilshanSenarath authored Mar 3, 2025
2 parents cf35e76 + 977cbc2 commit eda6e54
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ private ApplicationConstants() {

// Filtering operations.
public static final String FILTER_CO = "co";
public static final int MAX_NUMBER_OF_GROUPS_FROM_META_ENDPOINT = 100;

// System application config elements
public static final String SYSTEM_APPLICATIONS_CONFIG_ELEMENT = "SystemApplications";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3283,8 +3283,14 @@ public List<GroupBasicInfo> getGroups(String tenantDomain, String domainName, No
String.format(INVALID_USER_STORE_DOMAIN.getDescription(), domainName, tenantDomain));
}
List<GroupBasicInfo> groupBasicInfos = new ArrayList<>();
// Group endpoint does not support pagination.
List<Group> groups = userStoreManager.listGroups(filterCondition, domainName, 0, 0, null, null);
/*
* JDBC user store does not support pagination.
* LDAP and AD require a limit greater than zero to retrieve groups.
* Since the meta endpoint supports searching, the group limit will be set to a constant,
* allowing users to find relevant groups by searching.
*/
List<Group> groups = userStoreManager.listGroups(filterCondition, domainName,
ApplicationConstants.MAX_NUMBER_OF_GROUPS_FROM_META_ENDPOINT, 0, null, null);
for (Group group : groups) {
GroupBasicInfo groupBasicInfo = new GroupBasicInfo();
groupBasicInfo.setId(group.getGroupID());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1937,7 +1937,7 @@ public void testGetGroups(String tenantDomain, String domainName, Node filter, L
ArgumentCaptor<String> userDomainArgumentCaptor = ArgumentCaptor.forClass(String.class);
verify(mockAbstractUserStoreManager).listGroups(conditionArgumentCaptor.capture(),
userDomainArgumentCaptor.capture(),
eq(0), eq(0), nullable(String.class), nullable(String.class));
eq(100), eq(0), nullable(String.class), nullable(String.class));
if (filter == null) {
assertEquals(conditionArgumentCaptor.getValue().getOperation(), "SW");
assertEquals(((ExpressionCondition) conditionArgumentCaptor.getValue()).getAttributeName(),
Expand Down

0 comments on commit eda6e54

Please sign in to comment.