mirror of
https://github.com/keycloak/keycloak.git
synced 2025-12-30 11:29:57 -06:00
Move DeclarativeUserTest.java to the new testsuite (#37724)
Part of: #34494 Signed-off-by: Simon Vacek <simonvacky@email.cz>
This commit is contained in:
@@ -4,12 +4,15 @@ import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.RolesRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.representations.userprofile.config.UPConfig;
|
||||
|
||||
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 {
|
||||
|
||||
@@ -131,6 +134,19 @@ public class RealmConfigBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public RealmConfigBuilder internationalizationEnabled() {
|
||||
rep.setInternationalizationEnabled(true);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RealmConfigBuilder supportedLocales(String... supportedLocales) {
|
||||
if (rep.getSupportedLocales() == null) {
|
||||
rep.setSupportedLocales(new HashSet<>());
|
||||
}
|
||||
rep.getSupportedLocales().addAll(Set.of(supportedLocales));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RealmConfigBuilder smtp(String host, int port, String from) {
|
||||
Map<String, String> config = new HashMap<>();
|
||||
config.put("host", host);
|
||||
|
||||
@@ -1,65 +1,58 @@
|
||||
package org.keycloak.testsuite.admin;
|
||||
package org.keycloak.tests.admin;
|
||||
|
||||
import jakarta.ws.rs.BadRequestException;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.representations.idm.ErrorRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testframework.annotations.InjectRealm;
|
||||
import org.keycloak.testframework.annotations.KeycloakIntegrationTest;
|
||||
import org.keycloak.testframework.realm.ManagedRealm;
|
||||
import org.keycloak.testframework.realm.RealmConfig;
|
||||
import org.keycloak.testframework.realm.RealmConfigBuilder;
|
||||
import org.keycloak.testframework.remote.runonserver.InjectRunOnServer;
|
||||
import org.keycloak.testframework.remote.runonserver.RunOnServerClient;
|
||||
import org.keycloak.tests.utils.admin.ApiUtil;
|
||||
import org.keycloak.userprofile.DeclarativeUserProfileProvider;
|
||||
import org.keycloak.userprofile.UserProfileProvider;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.hamcrest.CoreMatchers.instanceOf;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.CoreMatchers.notNullValue;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.hamcrest.Matchers.hasSize;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.setUserProfileConfiguration;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.Keycloak;
|
||||
import org.keycloak.admin.client.resource.UserResource;
|
||||
import org.keycloak.admin.client.resource.UsersResource;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.protocol.oidc.OIDCLoginProtocol;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.ErrorRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.RoleRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.testsuite.util.AdminClientUtil;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.userprofile.DeclarativeUserProfileProvider;
|
||||
import org.keycloak.userprofile.UserProfileProvider;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import jakarta.ws.rs.BadRequestException;
|
||||
import jakarta.ws.rs.WebApplicationException;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.setUserProfileConfiguration;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:psilva@redhat.com">Pedro Igor</a>
|
||||
*/
|
||||
public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
@KeycloakIntegrationTest
|
||||
public class DeclarativeUserTest {
|
||||
|
||||
@InjectRealm(config = DeclarativeRealmConfig.class)
|
||||
ManagedRealm managedRealm;
|
||||
|
||||
@InjectRunOnServer
|
||||
RunOnServerClient runOnServer;
|
||||
|
||||
private static final String TEST_REALM_USER_MANAGER_NAME = "test-realm-user-manager";
|
||||
private static final String REQUIRED_ATTR_KEY = "required-attr";
|
||||
|
||||
private Keycloak testRealmUserManagerClient;
|
||||
|
||||
@Before
|
||||
public void onBefore() throws Exception {
|
||||
RealmRepresentation realmRep = realm.toRepresentation();
|
||||
realmRep.setInternationalizationEnabled(true);
|
||||
realmRep.setSupportedLocales(new HashSet<>(Arrays.asList("en", "de")));
|
||||
realm.update(realmRep);
|
||||
setUserProfileConfiguration(realm, "{\"attributes\": ["
|
||||
@BeforeEach
|
||||
public void onBefore() {
|
||||
setUserProfileConfiguration(managedRealm.admin(), "{\"attributes\": ["
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "},"
|
||||
@@ -69,49 +62,6 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
+ "{\"name\": \"custom-hidden\"},"
|
||||
+ "{\"name\": \"attr1\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"attr2\", " + PERMISSIONS_ALL + "}]}");
|
||||
|
||||
UserRepresentation testRealmUserManager = UserBuilder.create().username(TEST_REALM_USER_MANAGER_NAME)
|
||||
.password(TEST_REALM_USER_MANAGER_NAME).build();
|
||||
String createdUserId = null;
|
||||
try (Response response = realm.users().create(testRealmUserManager)) {
|
||||
createdUserId = ApiUtil.getCreatedId(response);
|
||||
} catch (WebApplicationException e) {
|
||||
// it's ok when the user has already been created for a previous test
|
||||
assertThat(e.getResponse().getStatus(), equalTo(409));
|
||||
}
|
||||
|
||||
if (createdUserId != null) {
|
||||
List<ClientRepresentation> foundClients = realm.clients().findByClientId("realm-management");
|
||||
assertThat(foundClients, hasSize(1));
|
||||
ClientRepresentation realmManagementClient = foundClients.get(0);
|
||||
|
||||
RoleRepresentation manageUsersRole =
|
||||
realm.clients().get(realmManagementClient.getId()).roles().get("manage-users").toRepresentation();
|
||||
assertThat(manageUsersRole, notNullValue());
|
||||
|
||||
realm.users().get(createdUserId).roles().clientLevel(realmManagementClient.getId())
|
||||
.add(Collections.singletonList(manageUsersRole));
|
||||
}
|
||||
|
||||
ClientRepresentation testApp = new ClientRepresentation();
|
||||
testApp.setClientId("test-app");
|
||||
testApp.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL);
|
||||
testApp.setSecret("secret");
|
||||
try (Response response = realm.clients().create(testApp)) {
|
||||
ApiUtil.getCreatedId(response);
|
||||
} catch (WebApplicationException e) {
|
||||
// it's ok when the client has already been created for a previous test
|
||||
}
|
||||
|
||||
testRealmUserManagerClient = AdminClientUtil.createAdminClient(true, realmRep.getRealm(),
|
||||
TEST_REALM_USER_MANAGER_NAME, TEST_REALM_USER_MANAGER_NAME, testApp.getClientId(), testApp.getSecret());
|
||||
}
|
||||
|
||||
@After
|
||||
public void closeClient() {
|
||||
if (testRealmUserManagerClient != null) {
|
||||
testRealmUserManagerClient.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -120,14 +70,14 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
user1.setUsername("user1");
|
||||
user1.singleAttribute("attr1", "value1user1");
|
||||
user1.singleAttribute("attr2", "value2user1");
|
||||
String user1Id = createUser(user1);
|
||||
String user1Id = createUserWithCleanup(user1);
|
||||
|
||||
user1 = realm.users().get(user1Id).toRepresentation();
|
||||
user1 = managedRealm.admin().users().get(user1Id).toRepresentation();
|
||||
Map<String, List<String>> attributes = user1.getAttributes();
|
||||
assertEquals(2, attributes.size());
|
||||
assertFalse(attributes.containsKey("custom-hidden"));
|
||||
Assertions.assertEquals(2, attributes.size());
|
||||
Assertions.assertFalse(attributes.containsKey("custom-hidden"));
|
||||
|
||||
setUserProfileConfiguration(this.realm, "{\"attributes\": ["
|
||||
setUserProfileConfiguration(managedRealm.admin(), "{\"attributes\": ["
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "},"
|
||||
@@ -139,15 +89,15 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
+ "{\"name\": \"attr2\", " + PERMISSIONS_ALL + "}]}");
|
||||
|
||||
|
||||
user1 = realm.users().get(user1Id).toRepresentation();
|
||||
user1 = managedRealm.admin().users().get(user1Id).toRepresentation();
|
||||
attributes = user1.getAttributes();
|
||||
assertEquals(2, attributes.size());
|
||||
assertFalse(attributes.containsKey("custom-hidden"));
|
||||
Assertions.assertEquals(2, attributes.size());
|
||||
Assertions.assertFalse(attributes.containsKey("custom-hidden"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateUnsetAttributeWithEmptyValue() {
|
||||
setUserProfileConfiguration(this.realm, "{\"attributes\": ["
|
||||
setUserProfileConfiguration(managedRealm.admin(), "{\"attributes\": ["
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "},"
|
||||
@@ -159,34 +109,34 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
user1.setUsername("user1");
|
||||
// set an attribute to later remove it from the configuration
|
||||
user1.singleAttribute("attr1", "some-value");
|
||||
String user1Id = createUser(user1);
|
||||
String user1Id = createUserWithCleanup(user1);
|
||||
|
||||
// remove the attr1 attribute from the configuration
|
||||
setUserProfileConfiguration(this.realm, "{\"attributes\": ["
|
||||
setUserProfileConfiguration(managedRealm.admin(), "{\"attributes\": ["
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"lastName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"attr2\"}]}");
|
||||
|
||||
UserResource userResource = realm.users().get(user1Id);
|
||||
UserResource userResource = managedRealm.admin().users().get(user1Id);
|
||||
user1 = userResource.toRepresentation();
|
||||
assertNull(user1.getAttributes());
|
||||
Assertions.assertNull(user1.getAttributes());
|
||||
user1.singleAttribute("attr2", "");
|
||||
// should be able to update the user when a read-only attribute has an empty or null value
|
||||
userResource.update(user1);
|
||||
user1 = userResource.toRepresentation();
|
||||
assertNull(user1.getAttributes());
|
||||
Assertions.assertNull(user1.getAttributes());
|
||||
user1.setAttributes(new HashMap<>());
|
||||
user1.getAttributes().put("attr2", null);
|
||||
userResource.update(user1);
|
||||
user1 = userResource.toRepresentation();
|
||||
assertNull(user1.getAttributes());
|
||||
Assertions.assertNull(user1.getAttributes());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidationUsingExistingAttributes() {
|
||||
setUserProfileConfiguration(this.realm, "{\"attributes\": ["
|
||||
setUserProfileConfiguration(managedRealm.admin(), "{\"attributes\": ["
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "},"
|
||||
@@ -197,9 +147,9 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
user1.setUsername("user1");
|
||||
// set an attribute to later remove it from the configuration
|
||||
user1.singleAttribute(REQUIRED_ATTR_KEY, "some-value");
|
||||
String user1Id = createUser(user1);
|
||||
String user1Id = createUserWithCleanup(user1);
|
||||
|
||||
UserResource userResource = realm.users().get(user1Id);
|
||||
UserResource userResource = managedRealm.admin().users().get(user1Id);
|
||||
user1 = userResource.toRepresentation();
|
||||
user1.setFirstName("changed");
|
||||
user1.setAttributes(null);
|
||||
@@ -207,11 +157,11 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
// do not validate REQUIRED_ATTR_KEY because the attribute list is not provided and the user has the attribute
|
||||
userResource.update(user1);
|
||||
user1 = userResource.toRepresentation();
|
||||
assertEquals("changed", user1.getFirstName());
|
||||
Assertions.assertEquals("changed", user1.getFirstName());
|
||||
|
||||
user1.setAttributes(Collections.emptyMap());
|
||||
String expectedErrorMessage = "error-user-attribute-required";
|
||||
verifyUserUpdateFails(realm.users(), user1Id, user1, expectedErrorMessage);
|
||||
verifyUserUpdateFails(managedRealm.admin().users(), user1Id, user1, expectedErrorMessage);
|
||||
}
|
||||
|
||||
private void verifyUserUpdateFails(UsersResource usersResource, String userId, UserRepresentation user,
|
||||
@@ -219,7 +169,7 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
UserResource userResource = usersResource.get(userId);
|
||||
try {
|
||||
userResource.update(user);
|
||||
fail("Should fail with errorMessage: " + expectedErrorMessage);
|
||||
Assertions.fail("Should fail with errorMessage: " + expectedErrorMessage);
|
||||
} catch (BadRequestException badRequest) {
|
||||
try (Response response = badRequest.getResponse()) {
|
||||
assertThat(response.getStatus(), equalTo(400));
|
||||
@@ -231,7 +181,7 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
|
||||
@Test
|
||||
public void testDefaultUserProfileProviderIsActive() {
|
||||
getTestingClient().server(REALM_NAME).run(session -> {
|
||||
runOnServer.run(session -> {
|
||||
Set<UserProfileProvider> providers = session.getAllProviders(UserProfileProvider.class);
|
||||
assertThat(providers, notNullValue());
|
||||
assertThat(providers.isEmpty(), is(false));
|
||||
@@ -245,37 +195,47 @@ public class DeclarativeUserTest extends AbstractAdminTest {
|
||||
|
||||
@Test
|
||||
public void testUserLocale() {
|
||||
RealmRepresentation realmRep = realm.toRepresentation();
|
||||
RealmRepresentation realmRep = managedRealm.admin().toRepresentation();
|
||||
Boolean internationalizationEnabled = realmRep.isInternationalizationEnabled();
|
||||
realmRep.setInternationalizationEnabled(true);
|
||||
realm.update(realmRep);
|
||||
managedRealm.admin().update(realmRep);
|
||||
|
||||
try {
|
||||
UserRepresentation user1 = new UserRepresentation();
|
||||
user1.setUsername("user1");
|
||||
user1.singleAttribute(UserModel.LOCALE, "pt_BR");
|
||||
String user1Id = createUser(user1);
|
||||
String user1Id = createUserWithCleanup(user1);
|
||||
|
||||
UserResource userResource = realm.users().get(user1Id);
|
||||
UserResource userResource = managedRealm.admin().users().get(user1Id);
|
||||
user1 = userResource.toRepresentation();
|
||||
assertEquals("pt_BR", user1.getAttributes().get(UserModel.LOCALE).get(0));
|
||||
Assertions.assertEquals("pt_BR", user1.getAttributes().get(UserModel.LOCALE).get(0));
|
||||
|
||||
realmRep.setInternationalizationEnabled(false);
|
||||
realm.update(realmRep);
|
||||
managedRealm.admin().update(realmRep);
|
||||
|
||||
user1 = userResource.toRepresentation();
|
||||
assertNull(user1.getAttributes());
|
||||
Assertions.assertNull(user1.getAttributes());
|
||||
} finally {
|
||||
realmRep.setInternationalizationEnabled(internationalizationEnabled);
|
||||
realm.update(realmRep);
|
||||
managedRealm.admin().update(realmRep);
|
||||
}
|
||||
}
|
||||
|
||||
private String createUser(UserRepresentation userRep) {
|
||||
Response response = realm.users().create(userRep);
|
||||
private String createUserWithCleanup(UserRepresentation userRep) {
|
||||
Response response = managedRealm.admin().users().create(userRep);
|
||||
String createdId = ApiUtil.getCreatedId(response);
|
||||
response.close();
|
||||
getCleanup().addUserId(createdId);
|
||||
managedRealm.cleanup().add(r -> r.users().get(createdId).remove());
|
||||
|
||||
return createdId;
|
||||
}
|
||||
|
||||
public static class DeclarativeRealmConfig implements RealmConfig {
|
||||
|
||||
@Override
|
||||
public RealmConfigBuilder configure(RealmConfigBuilder realm) {
|
||||
realm.internationalizationEnabled()
|
||||
.supportedLocales("en", "de");
|
||||
return realm;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,6 +41,10 @@
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-services</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.keycloak</groupId>
|
||||
<artifactId>keycloak-admin-client-tests</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.httpcomponents</groupId>
|
||||
<artifactId>httpclient</artifactId>
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.keycloak.testsuite.util.userprofile;
|
||||
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserProfileResource;
|
||||
import org.keycloak.models.UserModel;
|
||||
import org.keycloak.representations.userprofile.config.UPAttribute;
|
||||
import org.keycloak.representations.userprofile.config.UPAttributePermissions;
|
||||
import org.keycloak.representations.userprofile.config.UPAttributeRequired;
|
||||
import org.keycloak.representations.userprofile.config.UPConfig;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.keycloak.userprofile.config.UPConfigUtils.ROLE_ADMIN;
|
||||
import static org.keycloak.userprofile.config.UPConfigUtils.ROLE_USER;
|
||||
|
||||
public class UserProfileUtil {
|
||||
|
||||
public static final String SCOPE_DEPARTMENT = "department";
|
||||
public static final String ATTRIBUTE_DEPARTMENT = "department";
|
||||
|
||||
public static final String PERMISSIONS_ALL = "\"permissions\": {\"view\": [\"admin\", \"user\"], \"edit\": [\"admin\", \"user\"]}";
|
||||
public static final String PERMISSIONS_ADMIN_ONLY = "\"permissions\": {\"view\": [\"admin\"], \"edit\": [\"admin\"]}";
|
||||
public static final String PERMISSIONS_ADMIN_EDITABLE = "\"permissions\": {\"view\": [\"admin\", \"user\"], \"edit\": [\"admin\"]}";
|
||||
|
||||
public static String VALIDATIONS_LENGTH = "\"validations\": {\"length\": { \"min\": 3, \"max\": 255 }}";
|
||||
|
||||
public static final String CONFIGURATION_FOR_USER_EDIT = "{\"attributes\": ["
|
||||
+ "{\"name\": \"firstName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"lastName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\"," + PERMISSIONS_ALL + "}"
|
||||
+ "]}";
|
||||
|
||||
public static UPConfig setUserProfileConfiguration(RealmResource testRealm, String configuration) {
|
||||
try {
|
||||
UPConfig config = configuration == null ? null : JsonSerialization.readValue(configuration, UPConfig.class);
|
||||
|
||||
if (config != null) {
|
||||
UPAttribute username = config.getAttribute(UserModel.USERNAME);
|
||||
|
||||
if (username == null) {
|
||||
config.addOrReplaceAttribute(new UPAttribute(UserModel.USERNAME));
|
||||
}
|
||||
|
||||
UPAttribute email = config.getAttribute(UserModel.EMAIL);
|
||||
|
||||
if (email == null) {
|
||||
config.addOrReplaceAttribute(new UPAttribute(UserModel.EMAIL, new UPAttributePermissions(Set.of(ROLE_USER, ROLE_ADMIN), Set.of(ROLE_USER, ROLE_ADMIN)), new UPAttributeRequired(Set.of(ROLE_USER), Set.of())));
|
||||
}
|
||||
}
|
||||
|
||||
testRealm.users().userProfile().update(config);
|
||||
|
||||
return config;
|
||||
} catch (IOException ioe) {
|
||||
throw new RuntimeException("Failed to read configuration", ioe);
|
||||
}
|
||||
}
|
||||
|
||||
public static UPConfig enableUnmanagedAttributes(UserProfileResource upResource) {
|
||||
UPConfig cfg = upResource.getConfiguration();
|
||||
cfg.setUnmanagedAttributePolicy(UPConfig.UnmanagedAttributePolicy.ENABLED);
|
||||
upResource.update(cfg);
|
||||
return cfg;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -75,10 +75,10 @@ import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.admin.authentication.AbstractAuthenticationTest;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.broker.util.SimpleHttpDefault;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.oauth.AccessTokenResponse;
|
||||
import org.keycloak.testsuite.util.TokenUtil;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.UserProfileContext;
|
||||
|
||||
import jakarta.ws.rs.ClientErrorException;
|
||||
@@ -103,7 +103,7 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
|
||||
@@ -1865,6 +1865,6 @@ public class AccountRestServiceTest extends AbstractRestServiceTest {
|
||||
}
|
||||
|
||||
protected void setUserProfileConfiguration(String configuration) {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), configuration);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,9 +22,9 @@ import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.keycloak.testsuite.account.AccountRestServiceTest.assertUserProfileAttributeMetadata;
|
||||
import static org.keycloak.testsuite.account.AccountRestServiceTest.getUserProfileAttributeMetadata;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_ONLY;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_ONLY;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
@@ -44,7 +44,7 @@ import org.keycloak.representations.idm.UserProfileMetadata;
|
||||
import org.keycloak.representations.account.UserRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.testsuite.broker.util.SimpleHttpDefault;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.UserProfileContext;
|
||||
|
||||
/**
|
||||
@@ -372,7 +372,7 @@ public class AccountRestServiceWithUserProfileTest extends AbstractRestServiceTe
|
||||
}
|
||||
|
||||
protected void setUserProfileConfiguration(String configuration) {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), configuration);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
}
|
||||
|
||||
protected UserRepresentation getUser() throws IOException {
|
||||
|
||||
@@ -31,7 +31,6 @@ import org.keycloak.representations.idm.RoleRepresentation;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.admin.Users;
|
||||
import org.keycloak.testsuite.auth.page.login.OneTimeCode;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.pages.LoginConfigTotpPage;
|
||||
import org.keycloak.testsuite.pages.LoginTotpPage;
|
||||
import org.keycloak.testsuite.pages.PageUtils;
|
||||
@@ -40,6 +39,7 @@ import org.keycloak.testsuite.updaters.RealmAttributeUpdater;
|
||||
import jakarta.ws.rs.NotFoundException;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.keycloak.testsuite.util.AccountHelper;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
@@ -92,7 +92,7 @@ public class CustomAuthFlowOTPTest extends AbstractCustomAccountManagementTest {
|
||||
@Before
|
||||
public void configureUserProfile() {
|
||||
UserProfileResource userProfileRes = testRealmResource().users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
}
|
||||
|
||||
private void configureRequiredActions() {
|
||||
|
||||
@@ -23,13 +23,13 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_ONLY;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.SCOPE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.VALIDATIONS_LENGTH;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.CONFIGURATION_FOR_USER_EDIT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_ONLY;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.SCOPE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.VALIDATIONS_LENGTH;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.CONFIGURATION_FOR_USER_EDIT;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -41,7 +41,6 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
import org.keycloak.models.UserModel;
|
||||
@@ -61,6 +60,7 @@ import org.keycloak.testsuite.pages.LoginUpdateProfileEditUsernameAllowedPage;
|
||||
import org.keycloak.testsuite.util.ClientScopeBuilder;
|
||||
import org.keycloak.testsuite.util.KeycloakModelUtils;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
@@ -109,7 +109,7 @@ public class RequiredActionUpdateProfileWithUserProfileTest extends AbstractTest
|
||||
|
||||
@Before
|
||||
public void beforeTest() {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), null);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), null);
|
||||
|
||||
ApiUtil.removeUserByUsername(testRealm(), "test-user@localhost");
|
||||
UserRepresentation user = UserBuilder.create().enabled(true)
|
||||
@@ -160,11 +160,11 @@ public class RequiredActionUpdateProfileWithUserProfileTest extends AbstractTest
|
||||
public void testAttributeGrouping() {
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "], \"groups\": ["
|
||||
+ "{\"name\": \"company\", \"displayDescription\": \"Company field desc\" },"
|
||||
+ "{\"name\": \"contact\" }"
|
||||
@@ -197,11 +197,11 @@ public class RequiredActionUpdateProfileWithUserProfileTest extends AbstractTest
|
||||
public void testAttributeGuiOrder() {
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + "}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + "}"
|
||||
+ "]}");
|
||||
|
||||
loginPage.open();
|
||||
@@ -611,7 +611,7 @@ public class RequiredActionUpdateProfileWithUserProfileTest extends AbstractTest
|
||||
}
|
||||
|
||||
protected void setUserProfileConfiguration(String configuration) {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), configuration);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
}
|
||||
|
||||
protected UserRepresentation getUserByUsername(String username) {
|
||||
|
||||
@@ -17,10 +17,7 @@
|
||||
|
||||
package org.keycloak.testsuite.adapter;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.jboss.shrinkwrap.api.Archive;
|
||||
import org.jboss.shrinkwrap.api.asset.StringAsset;
|
||||
import org.jboss.shrinkwrap.api.spec.WebArchive;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.Before;
|
||||
@@ -31,10 +28,9 @@ import org.keycloak.testsuite.AbstractAuthTest;
|
||||
import org.keycloak.testsuite.adapter.page.AppServerContextRoot;
|
||||
import org.keycloak.testsuite.arquillian.SuiteContext;
|
||||
import org.keycloak.testsuite.arquillian.annotation.AppServerContainer;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.ServerURLs;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -123,7 +119,7 @@ public abstract class AbstractAdapterTest extends AbstractAuthTest {
|
||||
public void enableUnmanagedAttributes() {
|
||||
for (RealmRepresentation realm : adminClient.realms().findAll()) {
|
||||
UserProfileResource upResource = adminClient.realm(realm.getRealm()).users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(upResource);
|
||||
UserProfileUtil.enableUnmanagedAttributes(upResource);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,6 @@ import org.keycloak.storage.StorageId;
|
||||
import org.keycloak.storage.UserStorageProvider;
|
||||
import org.keycloak.testsuite.federation.DummyUserFederationProviderFactory;
|
||||
import org.keycloak.testsuite.federation.UserMapStorageFactory;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.pages.LoginPasswordUpdatePage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
import org.keycloak.testsuite.pages.InfoPage;
|
||||
@@ -96,6 +95,7 @@ import org.keycloak.testsuite.util.oauth.OAuthClient;
|
||||
import org.keycloak.testsuite.util.RealmBuilder;
|
||||
import org.keycloak.testsuite.util.RoleBuilder;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.DefaultAttributes;
|
||||
import org.keycloak.userprofile.validator.UsernameProhibitedCharactersValidator;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
@@ -200,14 +200,14 @@ public class UserTest extends AbstractAdminTest {
|
||||
public void beforeUserTest() throws IOException {
|
||||
createAppClientInRealm(REALM_NAME);
|
||||
|
||||
VerifyProfileTest.setUserProfileConfiguration(realm, null);
|
||||
UserProfileUtil.setUserProfileConfiguration(realm, null);
|
||||
UPConfig upConfig = realm.users().userProfile().getConfiguration();
|
||||
|
||||
for (String name : managedAttributes) {
|
||||
upConfig.addOrReplaceAttribute(createAttributeMetadata(name));
|
||||
}
|
||||
|
||||
VerifyProfileTest.setUserProfileConfiguration(realm, JsonSerialization.writeValueAsString(upConfig));
|
||||
UserProfileUtil.setUserProfileConfiguration(realm, JsonSerialization.writeValueAsString(upConfig));
|
||||
|
||||
assertAdminEvents.clear();
|
||||
}
|
||||
|
||||
@@ -43,13 +43,13 @@ import org.keycloak.representations.idm.RoleRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.representations.userprofile.config.UPConfig;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.updaters.Creator;
|
||||
import org.keycloak.testsuite.util.AdminEventPaths;
|
||||
import org.keycloak.testsuite.util.ClientBuilder;
|
||||
import org.keycloak.testsuite.util.RoleBuilder;
|
||||
import org.keycloak.testsuite.util.URLAssert;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.testsuite.utils.tls.TLSUtils;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
@@ -1300,7 +1300,7 @@ public class GroupTest extends AbstractGroupTest {
|
||||
|
||||
// enable user profile unmanaged attributes
|
||||
UserProfileResource upResource = realm.users().userProfile();
|
||||
UPConfig cfg = VerifyProfileTest.enableUnmanagedAttributes(upResource);
|
||||
UPConfig cfg = UserProfileUtil.enableUnmanagedAttributes(upResource);
|
||||
|
||||
GroupsResource groups = realm.groups();
|
||||
try (Response response = groups.add(GroupBuilder.create().name(groupName).build())) {
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
|
||||
package org.keycloak.testsuite.broker;
|
||||
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import jakarta.ws.rs.core.UriBuilder;
|
||||
import jakarta.ws.rs.core.UriBuilderException;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.After;
|
||||
@@ -31,7 +34,7 @@ import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.services.resources.RealmsResource;
|
||||
import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.ErrorPage;
|
||||
import org.keycloak.testsuite.pages.IdpConfirmLinkPage;
|
||||
import org.keycloak.testsuite.pages.IdpConfirmOverrideLinkPage;
|
||||
@@ -47,16 +50,13 @@ import org.keycloak.testsuite.pages.OAuthGrantPage;
|
||||
import org.keycloak.testsuite.pages.ProceedPage;
|
||||
import org.keycloak.testsuite.pages.UpdateAccountInformationPage;
|
||||
import org.keycloak.testsuite.pages.VerifyEmailPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.util.MailServer;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.oauth.LogoutUrlBuilder;
|
||||
import org.keycloak.testsuite.util.oauth.OAuthClient;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.openqa.selenium.TimeoutException;
|
||||
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import jakarta.ws.rs.core.UriBuilder;
|
||||
import jakarta.ws.rs.core.UriBuilderException;
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -190,8 +190,8 @@ public abstract class AbstractBaseBrokerTest extends AbstractKeycloakTest {
|
||||
importRealm(consumerRealm);
|
||||
importRealm(providerRealm);
|
||||
|
||||
VerifyProfileTest.enableUnmanagedAttributes(adminClient.realm(consumerRealm.getRealm()).users().userProfile());
|
||||
VerifyProfileTest.enableUnmanagedAttributes(adminClient.realm(providerRealm.getRealm()).users().userProfile());
|
||||
UserProfileUtil.enableUnmanagedAttributes(adminClient.realm(consumerRealm.getRealm()).users().userProfile());
|
||||
UserProfileUtil.enableUnmanagedAttributes(adminClient.realm(providerRealm.getRealm()).users().userProfile());
|
||||
}
|
||||
|
||||
@After
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package org.keycloak.testsuite.broker;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.hamcrest.CoreMatchers;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.IdentityProviderResource;
|
||||
@@ -25,6 +24,7 @@ import org.keycloak.testsuite.pages.RegisterPage;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.util.AccountHelper;
|
||||
import org.keycloak.testsuite.util.ClientScopeBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.NoSuchElementException;
|
||||
@@ -42,9 +42,9 @@ import static org.keycloak.testsuite.admin.ApiUtil.removeUserByUsername;
|
||||
import static org.keycloak.testsuite.broker.BrokerTestConstants.IDP_OIDC_ALIAS;
|
||||
import static org.keycloak.testsuite.broker.BrokerTestTools.createIdentityProvider;
|
||||
import static org.keycloak.testsuite.broker.BrokerTestTools.waitForPage;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -478,11 +478,11 @@ public class KcOidcFirstBrokerLoginTest extends AbstractFirstBrokerLoginTest {
|
||||
updateExecutions(AbstractBrokerTest::enableUpdateProfileOnFirstLogin);
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "], \"groups\": ["
|
||||
+ "{\"name\": \"company\", \"displayDescription\": \"Company field desc\" },"
|
||||
+ "{\"name\": \"contact\" }"
|
||||
@@ -522,11 +522,11 @@ public class KcOidcFirstBrokerLoginTest extends AbstractFirstBrokerLoginTest {
|
||||
updateExecutions(AbstractBrokerTest::enableUpdateProfileOnFirstLogin);
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + "}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + "}"
|
||||
+ "]}");
|
||||
|
||||
oauth.clientId("broker-app");
|
||||
@@ -824,7 +824,7 @@ public class KcOidcFirstBrokerLoginTest extends AbstractFirstBrokerLoginTest {
|
||||
}
|
||||
|
||||
protected void setUserProfileConfiguration(String configuration) {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), configuration);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
}
|
||||
|
||||
private RealmResource testRealm() {
|
||||
|
||||
@@ -45,10 +45,10 @@ import org.keycloak.testsuite.AbstractKeycloakTest;
|
||||
import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.arquillian.annotation.UncaughtServerErrorExpected;
|
||||
import org.keycloak.testsuite.client.resources.TestingExportImportResource;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.runonserver.RunHelpers;
|
||||
import org.keycloak.testsuite.util.JsonTestUtils;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.DeclarativeUserProfileProvider;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
@@ -291,7 +291,7 @@ public class ExportImportTest extends AbstractKeycloakTest {
|
||||
RealmResource realmRes = adminClient.realm(TEST_REALM);
|
||||
|
||||
//add some non-default config
|
||||
UPConfig persistedConfig = VerifyProfileTest.setUserProfileConfiguration(realmRes, VerifyProfileTest.CONFIGURATION_FOR_USER_EDIT);
|
||||
UPConfig persistedConfig = UserProfileUtil.setUserProfileConfiguration(realmRes, UserProfileUtil.CONFIGURATION_FOR_USER_EDIT);
|
||||
|
||||
//export
|
||||
TestingExportImportResource exportImport = testingClient.testing().exportImport();
|
||||
|
||||
@@ -46,10 +46,10 @@ import org.keycloak.services.messages.Messages;
|
||||
import org.keycloak.services.resources.account.AccountCredentialResource;
|
||||
import org.keycloak.storage.ldap.idm.model.LDAPObject;
|
||||
import org.keycloak.testsuite.broker.util.SimpleHttpDefault;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestUtils;
|
||||
import org.keycloak.testsuite.util.TokenUtil;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
@@ -175,7 +175,7 @@ public class LDAPAccountRestApiTest extends AbstractLDAPTest {
|
||||
public void testUpdateProfileUnmanagedAttributes() throws IOException {
|
||||
// User profile unmanaged attributes supported
|
||||
UserProfileResource userProfileRes = testRealm().users().userProfile();
|
||||
UPConfig origConfig = VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UPConfig origConfig = UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
|
||||
try {
|
||||
UserRepresentation user = getProfile();
|
||||
|
||||
@@ -56,7 +56,7 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.setUserProfileConfiguration;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.setUserProfileConfiguration;
|
||||
import static org.keycloak.util.JsonSerialization.writeValueAsString;
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,11 +42,11 @@ import org.keycloak.storage.ldap.idm.model.LDAPObject;
|
||||
import org.keycloak.storage.ldap.mappers.LDAPStorageMapper;
|
||||
import org.keycloak.storage.ldap.mappers.UserAttributeLDAPStorageMapper;
|
||||
import org.keycloak.testsuite.client.KeycloakTestingClient;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.LDAPRule;
|
||||
import org.keycloak.testsuite.util.LDAPTestUtils;
|
||||
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.validate.validators.LengthValidator;
|
||||
|
||||
import java.util.Collections;
|
||||
@@ -97,7 +97,7 @@ public class LDAPBinaryAttributesTest extends AbstractLDAPTest {
|
||||
|
||||
// User profile unmanaged attributes supported
|
||||
UserProfileResource userProfileRes = testRealm().users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -57,8 +57,8 @@ import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.federation.ldap.LDAPProvidersIntegrationTest;
|
||||
import org.keycloak.testsuite.federation.ldap.LDAPTestAsserts;
|
||||
import org.keycloak.testsuite.federation.ldap.LDAPTestContext;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.util.LDAPTestUtils;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
|
||||
/**
|
||||
@@ -76,7 +76,7 @@ public class LDAPProvidersIntegrationNoImportTest extends LDAPProvidersIntegrati
|
||||
@Before
|
||||
public void enableUserProfileUnmanagedAttributes() {
|
||||
UserProfileResource userProfileRes = testRealm().users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@ import org.keycloak.testsuite.arquillian.annotation.ModelTest;
|
||||
import org.keycloak.testsuite.federation.UserMapStorage;
|
||||
import org.keycloak.testsuite.federation.UserMapStorageFactory;
|
||||
import org.keycloak.testsuite.federation.UserPropertyFileStorageFactory;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.pages.AppPage;
|
||||
import org.keycloak.testsuite.pages.LoginPage;
|
||||
import org.keycloak.testsuite.pages.RegisterPage;
|
||||
@@ -56,6 +55,7 @@ import org.keycloak.testsuite.updaters.RealmAttributeUpdater;
|
||||
import org.keycloak.testsuite.util.AccountHelper;
|
||||
import org.keycloak.testsuite.util.GreenMailRule;
|
||||
import org.keycloak.testsuite.util.TestCleanup;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.DefaultAttributes;
|
||||
import org.openqa.selenium.Cookie;
|
||||
|
||||
@@ -169,7 +169,7 @@ public class UserStorageTest extends AbstractAuthTest {
|
||||
createAppClientInRealm(testRealmResource().toRepresentation().getRealm());
|
||||
|
||||
UserProfileResource userProfileRes = testRealmResource().users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
}
|
||||
|
||||
@After
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.keycloak.testsuite.util.AccountHelper;
|
||||
import org.keycloak.testsuite.util.FlowUtil;
|
||||
import org.keycloak.testsuite.util.GroupBuilder;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -68,7 +69,7 @@ public class ConditionalUserAttributeAuthenticatorTest extends AbstractTestRealm
|
||||
@Before
|
||||
public void configureUserProfile() {
|
||||
UserProfileResource userProfileRes = testRealm().users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(userProfileRes);
|
||||
UserProfileUtil.enableUnmanagedAttributes(userProfileRes);
|
||||
}
|
||||
|
||||
private void createUsers() {
|
||||
|
||||
@@ -22,11 +22,11 @@ import static org.hamcrest.Matchers.anyOf;
|
||||
import static org.hamcrest.Matchers.containsString;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.SCOPE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.VALIDATIONS_LENGTH;
|
||||
import static org.keycloak.testsuite.forms.VerifyProfileTest.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.SCOPE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.VALIDATIONS_LENGTH;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.ATTRIBUTE_DEPARTMENT;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
@@ -39,7 +39,6 @@ import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
@@ -53,6 +52,7 @@ import org.keycloak.testsuite.pages.RegisterPage;
|
||||
import org.keycloak.testsuite.util.ClientScopeBuilder;
|
||||
import org.keycloak.testsuite.util.GreenMailRule;
|
||||
import org.keycloak.testsuite.util.KeycloakModelUtils;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
import org.openqa.selenium.WebElement;
|
||||
@@ -110,7 +110,7 @@ public class RegisterWithUserProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
@Before
|
||||
public void beforeTest() {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(),null);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(),null);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -276,11 +276,11 @@ public class RegisterWithUserProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
public void testAttributeGuiOrder() {
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + "}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + "}"
|
||||
+ "]}");
|
||||
|
||||
loginPage.open();
|
||||
@@ -298,20 +298,20 @@ public class RegisterWithUserProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
}
|
||||
}
|
||||
|
||||
public static final String UP_CONFIG_PART_INPUT_TYPES = "{\"name\": \"defaultType\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"placeholderAttribute\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputTypePlaceholder\":\"Example.\"}},"
|
||||
+ "{\"name\": \"helperTexts\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputHelperTextBefore\":\"Example <b>bold text</b> before.\",\"inputHelperTextAfter\":\"Example <i>i text</i> after.\"}},"
|
||||
+ "{\"name\": \"textWithBasicAttributes\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputTypeSize\":\"35\",\"inputTypeMinlength\":\"1\",\"inputTypeMaxlength\":\"10\",\"inputTypePattern\":\".*\"}},"
|
||||
+ "{\"name\": \"html5NumberWithAttributes\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"html5-number\",\"inputTypeMin\":\"10\",\"inputTypeMax\":\"20\",\"inputTypeStep\":1}},"
|
||||
+ "{\"name\": \"textareaWithAttributes\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"textarea\",\"inputTypeCols\":\"35\",\"inputTypeRows\":\"7\",\"inputTypeMaxlength\":\"10\"}},"
|
||||
+ "{\"name\": \"selectWithoutOptions\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"select\",\"inputTypeSize\":\"5\"}},"
|
||||
+ "{\"name\": \"selectWithOptionsWithoutLabels\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\":{\"options\":{\"options\":[ \"opt1\",\"opt2\"]}}, \"annotations\":{\"inputType\":\"select\"}},"
|
||||
+ "{\"name\": \"multiselectWithOptionsAndSimpleI18nLabels\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\":{\"options\":{ \"options\":[\"totp\",\"opt2\"]}}, \"annotations\":{\"inputType\":\"multiselect\",\"inputOptionLabelsI18nPrefix\": \"loginTotp\"}},"
|
||||
+ "{\"name\": \"multiselectWithOptionsAndLabels\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\":{\"options\":{ \"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"multiselect\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectWithOptionsFromCustomValidatorAndLabels\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\":{\"dummyOptions\":{\"options\" : [\"vopt1\",\"vopt2\",\"vopt3\"]}} ,\"annotations\":{\"inputType\":\"select\",\"inputOptionsFromValidation\":\"dummyOptions\",\"inputOptionLabels\":{\"vopt1\": \"Option 1\",\"vopt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectRadiobuttons\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\" : {\"options\" : {\"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"select-radiobuttons\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectRadiobuttonsWithOptionsFromCustomValidatorAndLabels\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\" : {\"dummyOptions\" : {\"options\" : [\"vopt1\",\"vopt2\",\"vopt3\"]}} ,\"annotations\":{\"inputType\":\"select-radiobuttons\",\"inputOptionsFromValidation\":\"dummyOptions\",\"inputOptionLabels\":{\"vopt1\": \"Option 1\",\"vopt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"multiselectCheckboxes\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"validations\": {\"options\":{\"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"multiselect-checkboxes\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}}";
|
||||
public static final String UP_CONFIG_PART_INPUT_TYPES = "{\"name\": \"defaultType\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"placeholderAttribute\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputTypePlaceholder\":\"Example.\"}},"
|
||||
+ "{\"name\": \"helperTexts\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputHelperTextBefore\":\"Example <b>bold text</b> before.\",\"inputHelperTextAfter\":\"Example <i>i text</i> after.\"}},"
|
||||
+ "{\"name\": \"textWithBasicAttributes\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"text\",\"inputTypeSize\":\"35\",\"inputTypeMinlength\":\"1\",\"inputTypeMaxlength\":\"10\",\"inputTypePattern\":\".*\"}},"
|
||||
+ "{\"name\": \"html5NumberWithAttributes\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"html5-number\",\"inputTypeMin\":\"10\",\"inputTypeMax\":\"20\",\"inputTypeStep\":1}},"
|
||||
+ "{\"name\": \"textareaWithAttributes\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"textarea\",\"inputTypeCols\":\"35\",\"inputTypeRows\":\"7\",\"inputTypeMaxlength\":\"10\"}},"
|
||||
+ "{\"name\": \"selectWithoutOptions\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"annotations\":{\"inputType\":\"select\",\"inputTypeSize\":\"5\"}},"
|
||||
+ "{\"name\": \"selectWithOptionsWithoutLabels\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\":{\"options\":{\"options\":[ \"opt1\",\"opt2\"]}}, \"annotations\":{\"inputType\":\"select\"}},"
|
||||
+ "{\"name\": \"multiselectWithOptionsAndSimpleI18nLabels\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\":{\"options\":{ \"options\":[\"totp\",\"opt2\"]}}, \"annotations\":{\"inputType\":\"multiselect\",\"inputOptionLabelsI18nPrefix\": \"loginTotp\"}},"
|
||||
+ "{\"name\": \"multiselectWithOptionsAndLabels\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\":{\"options\":{ \"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"multiselect\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectWithOptionsFromCustomValidatorAndLabels\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\":{\"dummyOptions\":{\"options\" : [\"vopt1\",\"vopt2\",\"vopt3\"]}} ,\"annotations\":{\"inputType\":\"select\",\"inputOptionsFromValidation\":\"dummyOptions\",\"inputOptionLabels\":{\"vopt1\": \"Option 1\",\"vopt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectRadiobuttons\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\" : {\"options\" : {\"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"select-radiobuttons\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"selectRadiobuttonsWithOptionsFromCustomValidatorAndLabels\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\" : {\"dummyOptions\" : {\"options\" : [\"vopt1\",\"vopt2\",\"vopt3\"]}} ,\"annotations\":{\"inputType\":\"select-radiobuttons\",\"inputOptionsFromValidation\":\"dummyOptions\",\"inputOptionLabels\":{\"vopt1\": \"Option 1\",\"vopt2\":\"${username}\"}}},"
|
||||
+ "{\"name\": \"multiselectCheckboxes\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"validations\": {\"options\":{\"options\":[\"opt1\",\"opt2\",\"opt3\"]}}, \"annotations\":{\"inputType\":\"multiselect-checkboxes\",\"inputOptionLabels\":{\"opt1\": \"Option 1\",\"opt2\":\"${username}\"}}}";
|
||||
|
||||
@Test
|
||||
public void testAttributeInputTypes() {
|
||||
@@ -399,11 +399,11 @@ public class RegisterWithUserProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
public void testAttributeGrouping() {
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "{\"name\": \"lastName\"," + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + UserProfileUtil.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + UserProfileUtil.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + UserProfileUtil.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "], \"groups\": ["
|
||||
+ "{\"name\": \"company\", \"displayDescription\": \"Company field desc\" },"
|
||||
+ "{\"name\": \"contact\" }"
|
||||
@@ -641,7 +641,7 @@ public class RegisterWithUserProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
}
|
||||
|
||||
private void setUserProfileConfiguration(String configuration) {
|
||||
VerifyProfileTest.setUserProfileConfiguration(testRealm(), configuration);
|
||||
UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
}
|
||||
|
||||
private UserRepresentation getUser(String userId) {
|
||||
|
||||
@@ -16,30 +16,13 @@
|
||||
*/
|
||||
package org.keycloak.testsuite.forms;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.userprofile.config.UPConfigUtils.ROLE_ADMIN;
|
||||
import static org.keycloak.userprofile.config.UPConfigUtils.ROLE_USER;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jboss.arquillian.graphene.page.Page;
|
||||
import org.jboss.arquillian.test.api.ArquillianResource;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.resource.RealmResource;
|
||||
import org.keycloak.admin.client.resource.UserProfileResource;
|
||||
import org.keycloak.common.Profile;
|
||||
import org.keycloak.events.Details;
|
||||
import org.keycloak.events.EventType;
|
||||
@@ -50,9 +33,6 @@ import org.keycloak.representations.idm.AdminEventRepresentation;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
import org.keycloak.representations.userprofile.config.UPAttribute;
|
||||
import org.keycloak.representations.userprofile.config.UPAttributePermissions;
|
||||
import org.keycloak.representations.userprofile.config.UPAttributeRequired;
|
||||
import org.keycloak.representations.userprofile.config.UPConfig;
|
||||
import org.keycloak.testsuite.AbstractTestRealmKeycloakTest;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
@@ -67,35 +47,39 @@ import org.keycloak.testsuite.util.AssertAdminEvents;
|
||||
import org.keycloak.testsuite.util.ClientScopeBuilder;
|
||||
import org.keycloak.testsuite.util.JsonTestUtils;
|
||||
import org.keycloak.testsuite.util.KeycloakModelUtils;
|
||||
import org.keycloak.testsuite.util.oauth.OAuthClient;
|
||||
import org.keycloak.testsuite.util.RealmBuilder;
|
||||
import org.keycloak.testsuite.util.UserBuilder;
|
||||
import org.keycloak.testsuite.util.oauth.OAuthClient;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
import org.keycloak.userprofile.UserProfileContext;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.ATTRIBUTE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.CONFIGURATION_FOR_USER_EDIT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_EDITABLE;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ADMIN_ONLY;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.PERMISSIONS_ALL;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.SCOPE_DEPARTMENT;
|
||||
import static org.keycloak.testsuite.util.userprofile.UserProfileUtil.VALIDATIONS_LENGTH;
|
||||
|
||||
/**
|
||||
* @author Vlastimil Elias <velias@redhat.com>
|
||||
*/
|
||||
public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
public static final String SCOPE_DEPARTMENT = "department";
|
||||
public static final String ATTRIBUTE_DEPARTMENT = "department";
|
||||
|
||||
public static final String PERMISSIONS_ALL = "\"permissions\": {\"view\": [\"admin\", \"user\"], \"edit\": [\"admin\", \"user\"]}";
|
||||
public static final String PERMISSIONS_ADMIN_ONLY = "\"permissions\": {\"view\": [\"admin\"], \"edit\": [\"admin\"]}";
|
||||
public static final String PERMISSIONS_ADMIN_EDITABLE = "\"permissions\": {\"view\": [\"admin\", \"user\"], \"edit\": [\"admin\"]}";
|
||||
|
||||
public static String VALIDATIONS_LENGTH = "\"validations\": {\"length\": { \"min\": 3, \"max\": 255 }}";
|
||||
|
||||
public static final String CONFIGURATION_FOR_USER_EDIT = "{\"attributes\": ["
|
||||
+ "{\"name\": \"firstName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"lastName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\"," + PERMISSIONS_ALL + "}"
|
||||
+ "]}";
|
||||
|
||||
|
||||
private static String userId;
|
||||
|
||||
private static String user2Id;
|
||||
@@ -205,11 +189,11 @@ public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
updateUser(user5Id, "ExistingFirst", "ExistingLast", null);
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "{\"name\": \"lastName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"department\", " + PERMISSIONS_ALL + ", \"required\":{}, \"group\": \"company\"},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + ", \"group\": \"contact\"}"
|
||||
+ "], \"groups\": ["
|
||||
+ "{\"name\": \"company\", \"displayDescription\": \"Company field desc\" },"
|
||||
+ "{\"name\": \"contact\" }"
|
||||
@@ -244,11 +228,11 @@ public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
updateUser(user5Id, "ExistingFirst", "ExistingLast", null);
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"lastName\"," + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + VerifyProfileTest.PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + VerifyProfileTest.PERMISSIONS_ALL + "}"
|
||||
+ "{\"name\": \"lastName\"," + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"department\", " + PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"username\", " + PERMISSIONS_ALL + "},"
|
||||
+ "{\"name\": \"firstName\"," + PERMISSIONS_ALL + ", \"required\": {}},"
|
||||
+ "{\"name\": \"email\", " + PERMISSIONS_ALL + "}"
|
||||
+ "]}");
|
||||
|
||||
RealmRepresentation realm = testRealm().toRepresentation();
|
||||
@@ -277,7 +261,7 @@ public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
updateUser(user5Id, "ExistingFirst", "ExistingLast", null);
|
||||
|
||||
setUserProfileConfiguration("{\"attributes\": ["
|
||||
+ "{\"name\": \"department\", " + VerifyProfileTest.PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ "{\"name\": \"department\", " + PERMISSIONS_ALL + ", \"required\":{}},"
|
||||
+ RegisterWithUserProfileTest.UP_CONFIG_PART_INPUT_TYPES
|
||||
+ "]}");
|
||||
|
||||
@@ -1136,7 +1120,7 @@ public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
|
||||
protected UPConfig setUserProfileConfiguration(String configuration) {
|
||||
assertAdminEvents.clear();
|
||||
UPConfig result = setUserProfileConfiguration(testRealm(), configuration);
|
||||
UPConfig result = UserProfileUtil.setUserProfileConfiguration(testRealm(), configuration);
|
||||
AdminEventRepresentation adminEvent = assertAdminEvents.assertEvent(TEST_REALM_NAME,
|
||||
OperationType.UPDATE, AdminEventPaths.userProfilePath(), ResourceType.USER_PROFILE);
|
||||
Assert.assertTrue("Incorrect representation in event", StringUtils.isBlank(configuration)
|
||||
@@ -1145,39 +1129,6 @@ public class VerifyProfileTest extends AbstractTestRealmKeycloakTest {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static UPConfig setUserProfileConfiguration(RealmResource testRealm, String configuration) {
|
||||
try {
|
||||
UPConfig config = configuration == null ? null : JsonSerialization.readValue(configuration, UPConfig.class);
|
||||
|
||||
if (config != null) {
|
||||
UPAttribute username = config.getAttribute(UserModel.USERNAME);
|
||||
|
||||
if (username == null) {
|
||||
config.addOrReplaceAttribute(new UPAttribute(UserModel.USERNAME));
|
||||
}
|
||||
|
||||
UPAttribute email = config.getAttribute(UserModel.EMAIL);
|
||||
|
||||
if (email == null) {
|
||||
config.addOrReplaceAttribute(new UPAttribute(UserModel.EMAIL, new UPAttributePermissions(Set.of(ROLE_USER, ROLE_ADMIN), Set.of(ROLE_USER, ROLE_ADMIN)), new UPAttributeRequired(Set.of(ROLE_USER), Set.of())));
|
||||
}
|
||||
}
|
||||
|
||||
testRealm.users().userProfile().update(config);
|
||||
|
||||
return config;
|
||||
} catch (IOException ioe) {
|
||||
throw new RuntimeException("Failed to read configuration", ioe);
|
||||
}
|
||||
}
|
||||
|
||||
public static UPConfig enableUnmanagedAttributes(UserProfileResource upResource) {
|
||||
UPConfig cfg = upResource.getConfiguration();
|
||||
cfg.setUnmanagedAttributePolicy(UPConfig.UnmanagedAttributePolicy.ENABLED);
|
||||
upResource.update(cfg);
|
||||
return cfg;
|
||||
}
|
||||
|
||||
public static UserRepresentation getUser(RealmResource testRealm, String userId) {
|
||||
return testRealm.users().get(userId).toRepresentation();
|
||||
}
|
||||
|
||||
@@ -53,7 +53,6 @@ import org.keycloak.testsuite.Assert;
|
||||
import org.keycloak.testsuite.AssertEvents;
|
||||
import org.keycloak.testsuite.admin.ApiUtil;
|
||||
import org.keycloak.testsuite.arquillian.annotation.EnableFeature;
|
||||
import org.keycloak.testsuite.forms.VerifyProfileTest;
|
||||
import org.keycloak.testsuite.updaters.ClientAttributeUpdater;
|
||||
import org.keycloak.testsuite.updaters.ProtocolMappersUpdater;
|
||||
import org.keycloak.testsuite.util.AdminClientUtil;
|
||||
@@ -65,6 +64,7 @@ import org.keycloak.testsuite.util.UserInfoClientUtil;
|
||||
|
||||
import jakarta.ws.rs.client.Client;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.keycloak.testsuite.util.userprofile.UserProfileUtil;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
@@ -127,7 +127,7 @@ public class OIDCProtocolMappersTest extends AbstractKeycloakTest {
|
||||
|
||||
// enable user profile unmanaged attributes
|
||||
UserProfileResource upResource = adminClient.realm("test").users().userProfile();
|
||||
VerifyProfileTest.enableUnmanagedAttributes(upResource);
|
||||
UserProfileUtil.enableUnmanagedAttributes(upResource);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user