From 674fb31a2c01315e40fd38384ebce003a18f411a Mon Sep 17 00:00:00 2001 From: pedroigor Date: Wed, 29 Nov 2017 11:18:01 -0200 Subject: [PATCH] [KEYCLOAK-5660] - Rest API User count returns wrong value --- .../models/jpa/entities/UserEntity.java | 2 +- .../keycloak/testsuite/admin/UserTest.java | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java index 771487f754..b239a55cf9 100755 --- a/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java +++ b/model/jpa/src/main/java/org/keycloak/models/jpa/entities/UserEntity.java @@ -48,7 +48,7 @@ import java.util.Collection; @NamedQuery(name="getRealmUserByLastName", query="select u from UserEntity u where u.lastName = :lastName and u.realmId = :realmId"), @NamedQuery(name="getRealmUserByFirstLastName", query="select u from UserEntity u where u.firstName = :first and u.lastName = :last and u.realmId = :realmId"), @NamedQuery(name="getRealmUserByServiceAccount", query="select u from UserEntity u where u.serviceAccountClientLink = :clientInternalId and u.realmId = :realmId"), - @NamedQuery(name="getRealmUserCount", query="select count(u) from UserEntity u where u.realmId = :realmId"), + @NamedQuery(name="getRealmUserCount", query="select count(u) from UserEntity u where u.realmId = :realmId and (u.serviceAccountClientLink is null)"), @NamedQuery(name="getRealmUsersByAttributeNameAndValue", query="select u from UserEntity u join u.attributes attr " + "where u.realmId = :realmId and attr.name = :name and attr.value = :value"), @NamedQuery(name="deleteUsersByRealm", query="delete from UserEntity u where u.realmId = :realmId"), diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/UserTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/UserTest.java index 8442339e7b..20de89f00d 100755 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/UserTest.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/admin/UserTest.java @@ -405,6 +405,28 @@ public class UserTest extends AbstractAdminTest { assertEquals(9, count.intValue()); } + @Test + public void countUsersNotServiceAccount() { + createUsers(); + + Integer count = realm.users().count(); + assertEquals(9, count.intValue()); + + ClientRepresentation client = new ClientRepresentation(); + + client.setClientId("test-client"); + client.setPublicClient(false); + client.setSecret("secret"); + client.setServiceAccountsEnabled(true); + client.setEnabled(true); + client.setRedirectUris(Arrays.asList("http://url")); + + getAdminClient().realm(REALM_NAME).clients().create(client); + + // KEYCLOAK-5660, should not consider service accounts + assertEquals(9, realm.users().count().intValue()); + } + @Test public void delete() { String userId = createUser();