Test framework config builders name unification (#41727)

* Test framework config builders name unification

Closes #37275

Signed-off-by: Simon Vacek <simonvacky@email.cz>

* Update test-framework/core/src/main/java/org/keycloak/testframework/realm/RealmConfigBuilder.java

Signed-off-by: Stian Thorgersen <stian@redhat.com>

---------

Signed-off-by: Simon Vacek <simonvacky@email.cz>
Signed-off-by: Stian Thorgersen <stian@redhat.com>
Co-authored-by: Stian Thorgersen <stian@redhat.com>
This commit is contained in:
Šimon Vacek 2025-08-11 14:56:33 +02:00 committed by GitHub
parent 6a77072098
commit e664e56b62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
26 changed files with 101 additions and 108 deletions

View File

@ -96,13 +96,13 @@ public class ClientConfigBuilder {
return this;
}
public ClientConfigBuilder directAccessGrants() {
rep.setDirectAccessGrantsEnabled(true);
public ClientConfigBuilder directAccessGrantsEnabled(boolean enabled) {
rep.setDirectAccessGrantsEnabled(enabled);
return this;
}
public ClientConfigBuilder authorizationServices() {
rep.setAuthorizationServicesEnabled(true);
public ClientConfigBuilder authorizationServicesEnabled(boolean enabled) {
rep.setAuthorizationServicesEnabled(enabled);
return this;
}

View File

@ -2,9 +2,12 @@ package org.keycloak.testframework.realm;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class Collections {
@ -30,6 +33,26 @@ class Collections {
return combine(l1, items.toList());
}
static <T> Set<T> combine(Set<T> s1, Set<T> s2) {
if (s1 == null) {
return new HashSet<>(s2);
} else {
s1.addAll(s2);
return s1;
}
}
@SafeVarargs
static <T> Set<T> combine(Set<T> s1, T... items) {
return combine(s1, Set.of(items));
}
static <T> Set<T> combine(Set<T> s1, Stream<T> items) {
return combine(s1, items.collect(Collectors.toSet()));
}
static <K, V> Map<K, List<V>> combine(Map<K, List<V>> m1, Map<K, List<V>> m2) {
if (m1 == null) {
m1 = new HashMap<>();

View File

@ -9,11 +9,8 @@ import org.keycloak.representations.idm.UserRepresentation;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class RealmConfigBuilder {
@ -44,29 +41,20 @@ public class RealmConfigBuilder {
}
public ClientConfigBuilder addClient(String clientId) {
if (rep.getClients() == null) {
rep.setClients(new LinkedList<>());
}
ClientRepresentation client = new ClientRepresentation();
rep.getClients().add(client);
rep.setClients(Collections.combine(rep.getClients(), client));
return ClientConfigBuilder.update(client).enabled(true).clientId(clientId);
}
public UserConfigBuilder addUser(String username) {
if (rep.getUsers() == null) {
rep.setUsers(new LinkedList<>());
}
UserRepresentation user = new UserRepresentation();
rep.getUsers().add(user);
rep.setUsers(Collections.combine(rep.getUsers(), user));
return UserConfigBuilder.update(user).enabled(true).username(username);
}
public GroupConfigBuilder addGroup(String name) {
if (rep.getGroups() == null) {
rep.setGroups(new LinkedList<>());
}
GroupRepresentation group = new GroupRepresentation();
rep.getGroups().add(group);
rep.setGroups(Collections.combine(rep.getGroups(), group));
return GroupConfigBuilder.update(group).name(name);
}
@ -75,8 +63,8 @@ public class RealmConfigBuilder {
return this;
}
public RealmConfigBuilder editUsernameAllowed(boolean editUsernameAllowed) {
rep.setEditUsernameAllowed(editUsernameAllowed);
public RealmConfigBuilder editUsernameAllowed(boolean allowed) {
rep.setEditUsernameAllowed(allowed);
return this;
}
@ -106,23 +94,17 @@ public class RealmConfigBuilder {
}
public RealmConfigBuilder enabledEventTypes(String... enabledEventTypes) {
if (rep.getEnabledEventTypes() == null) {
rep.setEnabledEventTypes(new LinkedList<>());
}
rep.getEnabledEventTypes().addAll(List.of(enabledEventTypes));
rep.setEnabledEventTypes(Collections.combine(rep.getEnabledEventTypes(), enabledEventTypes));
return this;
}
public RealmConfigBuilder overwriteEnabledEventTypes(String... enabledEventTypes) {
public RealmConfigBuilder setEnabledEventTypes(String... enabledEventTypes) {
rep.setEnabledEventTypes(List.of(enabledEventTypes));
return this;
}
public RealmConfigBuilder eventsListeners(String... eventListeners) {
if (rep.getEventsListeners() == null) {
rep.setEventsListeners(new LinkedList<>());
}
rep.getEventsListeners().addAll(List.of(eventListeners));
rep.setEventsListeners(Collections.combine(rep.getEventsListeners(), eventListeners));
return this;
}
@ -175,10 +157,7 @@ public class RealmConfigBuilder {
}
public RealmConfigBuilder supportedLocales(String... supportedLocales) {
if (rep.getSupportedLocales() == null) {
rep.setSupportedLocales(new HashSet<>());
}
rep.getSupportedLocales().addAll(Set.of(supportedLocales));
rep.setSupportedLocales(Collections.combine(rep.getSupportedLocales(), supportedLocales));
return this;
}
@ -196,8 +175,8 @@ public class RealmConfigBuilder {
return this;
}
public RealmConfigBuilder organizationsEnabled(boolean organizationsEnabled) {
rep.setOrganizationsEnabled(organizationsEnabled);
public RealmConfigBuilder organizationsEnabled(boolean enabled) {
rep.setOrganizationsEnabled(enabled);
return this;
}
@ -211,8 +190,8 @@ public class RealmConfigBuilder {
return this;
}
public RealmConfigBuilder duplicateEmailsAllowed(boolean duplicateEmailsAllowed) {
rep.setDuplicateEmailsAllowed(duplicateEmailsAllowed);
public RealmConfigBuilder duplicateEmailsAllowed(boolean allowed) {
rep.setDuplicateEmailsAllowed(allowed);
return this;
}

View File

@ -8,9 +8,6 @@ import org.keycloak.representations.idm.FederatedIdentityRepresentation;
import org.keycloak.representations.idm.UserRepresentation;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
public class UserConfigBuilder {
@ -56,8 +53,8 @@ public class UserConfigBuilder {
return this;
}
public UserConfigBuilder emailVerified() {
rep.setEmailVerified(true);
public UserConfigBuilder emailVerified(boolean verified) {
rep.setEmailVerified(verified);
return this;
}
@ -72,13 +69,7 @@ public class UserConfigBuilder {
}
public UserConfigBuilder clientRoles(String client, String... roles) {
if (rep.getClientRoles() == null) {
rep.setClientRoles(new HashMap<>());
}
if (!rep.getClientRoles().containsKey(client)) {
rep.getClientRoles().put(client, new LinkedList<>());
}
rep.getClientRoles().get(client).addAll(List.of(roles));
rep.setClientRoles(Collections.combine(rep.getClientRoles(), client, roles));
return this;
}

View File

@ -65,7 +65,7 @@ public class EmailTest {
@Override
public UserConfigBuilder configure(UserConfigBuilder user) {
return user.username("test").email("test@local").password("password").emailVerified();
return user.username("test").email("test@local").password("password").emailVerified(true);
}
}

View File

@ -74,12 +74,12 @@ public class RealmSpecificAdminClientTest {
public RealmConfigBuilder configure(RealmConfigBuilder realm) {
realm.addClient("myclient")
.secret("mysecret")
.directAccessGrants();
.directAccessGrantsEnabled(true);
realm.addUser("myadmin")
.name("My", "Admin")
.email("myadmin@localhost")
.emailVerified()
.emailVerified(true)
.password("mypassword")
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);

View File

@ -9,7 +9,7 @@ public class DefaultOAuthClientConfiguration implements ClientConfig {
public ClientConfigBuilder configure(ClientConfigBuilder client) {
return client.clientId("test-app")
.serviceAccountsEnabled(true)
.directAccessGrants()
.directAccessGrantsEnabled(true)
.secret("test-secret");
}

View File

@ -246,7 +246,7 @@ public class AbstractPermissionsTest {
realm.addClient("test-client")
.enabled(true)
.publicClient(true)
.directAccessGrants();
.directAccessGrantsEnabled(true);
realm.addUser(AdminRoles.REALM_ADMIN)
.name("realm-admin", "realm-admin")
@ -292,7 +292,7 @@ public class AbstractPermissionsTest {
realm.addClient("test-client")
.publicClient(true)
.directAccessGrants();
.directAccessGrantsEnabled(true);
realm.addUser("admin")
.name("admin", "admin")

View File

@ -275,16 +275,16 @@ public class AdminConsoleWhoAmILocaleTest {
realm.internationalizationEnabled(false);
realm.addUser(USER_WITHOUT_LOCALE).password(PASSWORD)
.name("My", "Locale Off")
.email("locale-off@email.org").emailVerified()
.email("locale-off@email.org").emailVerified(true)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
realm.addUser(USER_WITH_LOCALE).password(PASSWORD)
.name("My", "Locale On")
.email("locale-on@email.org").emailVerified()
.email("locale-on@email.org").emailVerified(true)
.attribute("locale", USER_LOCALE)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
realm.addClient(ADMIN_CLI_CLIENT_ID).name(ADMIN_CLI_CLIENT_ID).secret(SECRET)
.attribute(Constants.SECURITY_ADMIN_CONSOLE_ATTR, "true")
.directAccessGrants();
.directAccessGrantsEnabled(true);
return realm;
}
@ -300,22 +300,22 @@ public class AdminConsoleWhoAmILocaleTest {
realm.addUser(USER_WITHOUT_LOCALE).password(PASSWORD)
.name("My", "Locale Off")
.email("locale-off@email.org").emailVerified()
.email("locale-off@email.org").emailVerified(true)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
realm.addUser(USER_WITH_LOCALE).password(PASSWORD)
.email("locale-on@email.org").emailVerified().name("My", "Locale On")
.email("locale-on@email.org").emailVerified(true).name("My", "Locale On")
.attribute("locale", USER_LOCALE)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
realm.addUser(USER_NO_ACCESS).password(PASSWORD)
.name("No", "Access")
.email("no-access@email.org").emailVerified()
.email("no-access@email.org").emailVerified(true)
.attribute("locale", USER_LOCALE);
realm.addClient(ADMIN_CLI_CLIENT_ID).name(ADMIN_CLI_CLIENT_ID).secret(SECRET)
.attribute(Constants.SECURITY_ADMIN_CONSOLE_ATTR, "true")
.directAccessGrants();
.directAccessGrantsEnabled(true);
realm.addClient(ADMIN_CLI_NOT_ALLOWED).name(ADMIN_CLI_NOT_ALLOWED).secret(SECRET)
.attribute(Constants.SECURITY_ADMIN_CONSOLE_ATTR, null)
.directAccessGrants();
.directAccessGrantsEnabled(true);
return realm;
}
@ -330,7 +330,7 @@ public class AdminConsoleWhoAmILocaleTest {
user.name("My", "Admin");
user.roles("admin");
user.email("master-admin@email.org");
user.emailVerified();
user.emailVerified(true);
user.attribute("locale", DEFAULT_LOCALE);
@ -346,7 +346,7 @@ public class AdminConsoleWhoAmILocaleTest {
client.name("master-admin-cli");
client.secret(SECRET);
client.attribute(Constants.SECURITY_ADMIN_CONSOLE_ATTR, "true");
client.directAccessGrants();
client.directAccessGrantsEnabled(true);
return client;
}

View File

@ -105,7 +105,7 @@ public class AuthzCleanupTest {
@Override
public RealmConfigBuilder configure(RealmConfigBuilder realm) {
realm.addClient(clientId).secret(clientSecret).authorizationServices().redirectUris("http://localhost/myclient");
realm.addClient(clientId).secret(clientSecret).authorizationServicesEnabled(true).redirectUris("http://localhost/myclient");
realm.roles("client-role-1",
"client-role-2",
"Acme administrator",

View File

@ -415,7 +415,7 @@ public class ConsentsTest {
builder.username("user");
builder.password("password");
builder.email("user@local");
builder.emailVerified();
builder.emailVerified(true);
builder.name("Local", "User");
return builder;
@ -429,7 +429,7 @@ public class ConsentsTest {
builder.username("provider");
builder.password("password");
builder.email("provider@local");
builder.emailVerified();
builder.emailVerified(true);
builder.name("Provider", "User");
return builder;

View File

@ -475,20 +475,20 @@ public class ImpersonationTest {
@Override
public RealmConfigBuilder configure(RealmConfigBuilder config) {
config.addClient("myclient").clientId("myclient")
.publicClient(true).directAccessGrants();
.publicClient(true).directAccessGrantsEnabled(true);
config.addUser("realm-admin")
.password("password").name("My", "Test Admin")
.email("my-test-admin@email.org").emailVerified()
.email("my-test-admin@email.org").emailVerified(true)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
config.addUser("impersonator")
.password("password").name("My", "Test Impersonator")
.email("my-test-impersonator@email.org").emailVerified()
.email("my-test-impersonator@email.org").emailVerified(true)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.IMPERSONATION)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.VIEW_USERS);
config.addUser("bad-impersonator")
.password("password").name("My", "Test Bad Impersonator")
.email("my-test-bad-impersonator@email.org").emailVerified()
.email("my-test-bad-impersonator@email.org").emailVerified(true)
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.MANAGE_USERS);
return config;
@ -503,7 +503,7 @@ public class ImpersonationTest {
user.password("password");
user.name("My", "Test");
user.email("test@email.org");
user.emailVerified();
user.emailVerified(true);
return user;
}

View File

@ -309,7 +309,7 @@ public class SMTPConnectionTest {
realm.addClient("myclient")
.secret("mysecret")
.directAccessGrants();
.directAccessGrantsEnabled(true);
//add client for token gathering (XOAUTH2)
//reuse the same client does not work
@ -326,7 +326,7 @@ public class SMTPConnectionTest {
realm.addUser("myadmin")
.name("My", "Admin")
.email("admin@localhost")
.emailVerified()
.emailVerified(true)
.password("myadmin")
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);

View File

@ -90,7 +90,7 @@ public class UsersTest {
.password("password")
.name("user1FirstName", "user1LastName")
.email("user1@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -113,7 +113,7 @@ public class UsersTest {
.password("password")
.name("testuser2", "testuser2")
.email("testuser2@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -150,7 +150,7 @@ public class UsersTest {
.password("password")
.name("user1FirstName", "user1LastName")
.email("user1@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -173,7 +173,7 @@ public class UsersTest {
.password("password")
.name("user1FirstName", "user1LastName")
.email("user1@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
createUser(UserConfigBuilder.create()
@ -209,7 +209,7 @@ public class UsersTest {
.password("password")
.name("user1FirstName", "user1LastName")
.email("user1@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -226,7 +226,7 @@ public class UsersTest {
.password("password")
.name("user3FirstName", "user3LastName")
.email("user3@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -254,7 +254,7 @@ public class UsersTest {
.password("password")
.name("user1FirstName", "user1LastName")
.email("user1@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());
@ -271,7 +271,7 @@ public class UsersTest {
.password("password")
.name("user3FirstName", "user3LastName")
.email("user3@example.com")
.emailVerified()
.emailVerified(true)
.enabled(true)
.build());

View File

@ -24,7 +24,7 @@ public class AuthzClientConfig implements ClientConfig {
@Override
public ClientConfigBuilder configure(ClientConfigBuilder client) {
return client.serviceAccountsEnabled(true)
.authorizationServices();
.authorizationServicesEnabled(true);
}
}

View File

@ -29,7 +29,7 @@ public class RealmAdminPermissionsConfig implements RealmConfig {
realm.addUser("myadmin")
.name("My", "Admin")
.email("myadmin@localhost")
.emailVerified()
.emailVerified(true)
.password("password")
.clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID,
AdminRoles.QUERY_USERS,
@ -37,11 +37,11 @@ public class RealmAdminPermissionsConfig implements RealmConfig {
AdminRoles.QUERY_CLIENTS);
realm.addClient("myclient")
.secret("mysecret")
.directAccessGrants();
.directAccessGrantsEnabled(true);
realm.addClient("myresourceserver")
.secret("mysecret")
.directAccessGrants()
.authorizationServices();
.directAccessGrantsEnabled(true)
.authorizationServicesEnabled(true);
return realm.adminPermissionsEnabled(true);
}
}

View File

@ -441,7 +441,7 @@ public class InstallationTest {
.protocol("openid-connect")
.bearerOnly(false)
.publicClient(false)
.authorizationServices()
.authorizationServicesEnabled(true)
.serviceAccountsEnabled(true);
}
}

View File

@ -92,9 +92,9 @@ public class AdminEventAuthDetailsTest {
@Override
public RealmConfigBuilder configure(RealmConfigBuilder realm) {
realm.addClient("client").name("client").publicClient(true).directAccessGrants();
realm.addClient("client").name("client").publicClient(true).directAccessGrantsEnabled(true);
realm.addUser("admin").password("password").name("My", "Admin").email("admin@localhost")
.emailVerified().clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
.emailVerified(true).clientRoles(Constants.REALM_MANAGEMENT_CLIENT_ID, AdminRoles.REALM_ADMIN);
realm.addUser("app-user").password("password");
return realm;

View File

@ -72,7 +72,7 @@ public class EmailEventListenerTest {
@Override
public UserConfigBuilder configure(UserConfigBuilder user) {
return user.username("test").email("test@local").password("password").emailVerified();
return user.username("test").email("test@local").password("password").emailVerified(true);
}
}

View File

@ -96,7 +96,7 @@ public class EventConfigTest {
Assertions.assertEquals(2, enabledEventTypes.size());
// remove all event types
configRealm.updateWithCleanup(RealmConfigBuilder::overwriteEnabledEventTypes);
configRealm.updateWithCleanup(RealmConfigBuilder::setEnabledEventTypes);
// removing all event types restores default events
Assertions.assertEquals(defaultEventCount, configRealm.admin().getRealmEventsConfig().getEnabledEventTypes().size());

View File

@ -122,7 +122,7 @@ public class LoginEventsTest {
badLogin();
Assertions.assertEquals(0, events().size());
managedRealm.updateWithCleanup(r -> r.overwriteEnabledEventTypes("LOGIN_ERROR"));
managedRealm.updateWithCleanup(r -> r.setEnabledEventTypes("LOGIN_ERROR"));
badLogin();
Assertions.assertEquals(1, events().size());

View File

@ -187,7 +187,7 @@ public class GroupMappersTest extends AbstractGroupTest {
realm.addClient(CLIENT_ID)
.enabled(true)
.secret(CLIENT_SECRET)
.directAccessGrants()
.directAccessGrantsEnabled(true)
.protocolMappers(mappers);
realm.eventsEnabled(true)

View File

@ -979,7 +979,7 @@ public class GroupTest extends AbstractGroupTest {
.password("password");
realm.addClient("resource-owner")
.directAccessGrants()
.directAccessGrantsEnabled(true)
.secret("secret");
return realm;

View File

@ -307,7 +307,7 @@ public class UserCredentialTest extends AbstractUserTest {
builder.password("password");
builder.name("John", "Doh");
builder.email("john-doh@localhost");
builder.emailVerified();
builder.emailVerified(true);
return builder;
}
@ -321,7 +321,7 @@ public class UserCredentialTest extends AbstractUserTest {
builder.password("password");
builder.name("Tom", "Brady");
builder.email("test-user@localhost");
builder.emailVerified();
builder.emailVerified(true);
return builder;
}
@ -335,7 +335,7 @@ public class UserCredentialTest extends AbstractUserTest {
builder.password("password");
builder.name("Otp", "1");
builder.email("otp1@redhat.com");
builder.emailVerified();
builder.emailVerified(true);
builder.totpSecret("DJmQfC73VGFhw7D4QJ8A");
return builder;
@ -350,7 +350,7 @@ public class UserCredentialTest extends AbstractUserTest {
builder.password("password");
builder.name("Otp", "2");
builder.email("otp2@redhat.com");
builder.emailVerified();
builder.emailVerified(true);
builder.totpSecret("DJmQfC73VGFhw7D4QJ8A");
builder.totpSecret("ABCQfC73VGFhw7D4QJ8A");

View File

@ -40,7 +40,7 @@ public class UserGroupTest extends AbstractUserTest {
UserRepresentation userRepresentation = UserConfigBuilder.create()
.username(userName).name("average", "joe").password("password")
.email("joe@average.com").emailVerified().build();
.email("joe@average.com").emailVerified(true).build();
GroupRepresentation groupRepresentation = GroupConfigBuilder.create().name(groupName).setAttributes(attributes).build();
@ -68,7 +68,7 @@ public class UserGroupTest extends AbstractUserTest {
UserRepresentation userRepresentation = UserConfigBuilder.create()
.username(userName).name("average", "joe").password("password")
.email("joe@average.com").emailVerified().build();
.email("joe@average.com").emailVerified(true).build();
GroupRepresentation groupRepresentation = GroupConfigBuilder.create().name(groupName1).setAttributes(attributes1).build();
GroupRepresentation groupRepresentation2 = GroupConfigBuilder.create().name(groupName2).setAttributes(attributes2).build();

View File

@ -167,7 +167,7 @@ public class UserSearchTest extends AbstractUserTest {
UserRepresentation userRep = UserConfigBuilder.create()
.username("user1").password("password").name("user1FirstName", "user1LastName")
.email("user1@example.com").emailVerified().attribute("attr", longValue).build();
.email("user1@example.com").emailVerified(true).attribute("attr", longValue).build();
String userId = createUser(userRep);
UserRepresentation user1 = managedRealm.admin().users().get(userId).toRepresentation();
@ -177,7 +177,7 @@ public class UserSearchTest extends AbstractUserTest {
UserRepresentation userRep2 = UserConfigBuilder.create()
.username("user2").password("password").name("user2FirstName", "user2LastName")
.email("user2@example.com").emailVerified().attribute("attr", longValue + "a").build();
.email("user2@example.com").emailVerified(true).attribute("attr", longValue + "a").build();
Response response = managedRealm.admin().users().create(userRep2);
assertThat(response.getStatus(), equalTo(400));
@ -192,15 +192,15 @@ public class UserSearchTest extends AbstractUserTest {
UserRepresentation userRep = UserConfigBuilder.create()
.username("user1").password("password").name("user1FirstName", "user1LastName")
.email("user1@example.com").emailVerified()
.email("user1@example.com").emailVerified(true)
.attribute("test1", longValue, "v2").attribute("test2", "v2").build();
UserRepresentation userRep2 = UserConfigBuilder.create()
.username("user2").password("password").name("user2FirstName", "user2LastName")
.email("user2@example.com").emailVerified()
.email("user2@example.com").emailVerified(true)
.attribute("test1", longValue, "v2").attribute("test2", longValue2).build();
UserRepresentation userRep3 = UserConfigBuilder.create()
.username("user3").password("password").name("user3FirstName", "user3LastName")
.email("user3@example.com").emailVerified()
.email("user3@example.com").emailVerified(true)
.attribute("test2", longValue, "v3").attribute("test4", "v4").build();
createUser(userRep);