diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ClientAttributeUpdater.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ClientAttributeUpdater.java index 81d5e9f125..5ac6340470 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ClientAttributeUpdater.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ClientAttributeUpdater.java @@ -15,13 +15,20 @@ import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertThat; /** - * + * Updater for client attributes. See {@link ServerResourceUpdater} for further details. * @author hmlnarik */ public class ClientAttributeUpdater extends ServerResourceUpdater { private final RealmResource realmResource; + /** + * Creates a {@ClientAttributeUpdater} for the given client. The client must exist. + * @param adminClient + * @param realm + * @param clientId + * @return + */ public static ClientAttributeUpdater forClient(Keycloak adminClient, String realm, String clientId) { RealmResource realmRes = adminClient.realm(realm); ClientsResource clients = realmRes.clients(); diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RealmAttributeUpdater.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RealmAttributeUpdater.java index fad4f9a02b..ee6129a022 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RealmAttributeUpdater.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RealmAttributeUpdater.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.List; /** - * + * Updater for realm attributes. See {@link ServerResourceUpdater} for further details. * @author hmlnarik */ public class RealmAttributeUpdater extends ServerResourceUpdater { diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RoleScopeUpdater.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RoleScopeUpdater.java index dd295b0949..bb92895d79 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RoleScopeUpdater.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/RoleScopeUpdater.java @@ -23,7 +23,7 @@ import java.util.Set; import java.util.stream.Collectors; /** - * + * Updater for role scope attributes. See {@link ServerResourceUpdater} for further details. * @author hmlnarik */ public class RoleScopeUpdater extends ServerResourceUpdater> { diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ServerResourceUpdater.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ServerResourceUpdater.java index 4001736d5a..7ca0bdfbfb 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ServerResourceUpdater.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/ServerResourceUpdater.java @@ -28,7 +28,30 @@ import java.util.function.Supplier; import java.util.stream.Collectors; /** + * Class for updating a server resource. This class supports reverting changes via try-with-resources block. * + * It works as follows: + *
    + *
  1. In the constructor, current representation of the resource is obtained and stored internally into two object: + * one that is used to capture modifications local, and another one which is immutable and used for restoration at the end
  2. + *
  3. The first object can be modified locally via instance methods.
  4. + *
  5. Once modifications are finalized, {@link #update()} method updates the object on the server. + * Note that this method can be called more than once inside the {@code try} block.
  6. + *
  7. After finishing the try-with-resources block, the changes are reverted back by updating the resource on the server + * to the state in the first step
  8. + *
+ * + * It is generally used according to the following pattern: + *
+ * try (ServerResourceUpdater sru = new ServerResourceUpdater().setProperty(x).update()) {
+ *     // ... do the job
+ *     // Potentially use sru to modify the object again and run sru.update()
+ * }
+ * 
+ * + * @param Type of the subclass (to support Builder pattern) + * @param Object representation type + * @param Server resource * @author hmlnarik */ public abstract class ServerResourceUpdater implements Closeable { @@ -48,10 +71,18 @@ public abstract class ServerResourceUpdater representationUpdater) { representationUpdater.accept(this.rep); return (T) this; } + /** + * Reverts the object state on the server to the state that was there upon creation of this updater. + * @throws IOException + */ @Override public void close() throws IOException { if (this.updated) { diff --git a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/UserAttributeUpdater.java b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/UserAttributeUpdater.java index 9603dadab2..43500ddb64 100644 --- a/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/UserAttributeUpdater.java +++ b/testsuite/integration-arquillian/tests/base/src/main/java/org/keycloak/testsuite/updaters/UserAttributeUpdater.java @@ -1,12 +1,9 @@ package org.keycloak.testsuite.updaters; import org.keycloak.admin.client.Keycloak; -import org.keycloak.admin.client.resource.ClientResource; -import org.keycloak.admin.client.resource.ClientsResource; import org.keycloak.admin.client.resource.UserResource; import org.keycloak.admin.client.resource.UsersResource; import org.keycloak.models.UserModel; -import org.keycloak.representations.idm.ClientRepresentation; import org.keycloak.representations.idm.UserRepresentation; import java.util.Arrays; import java.util.HashMap; @@ -16,11 +13,18 @@ import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertThat; /** - * + * Updater for user attributes. See {@link ServerResourceUpdater} for further details. * @author hmlnarik */ public class UserAttributeUpdater extends ServerResourceUpdater { + /** + * Creates a {@UserAttributeUpdater} for the given user. The user must exist. + * @param adminClient + * @param realm + * @param clientId + * @return + */ public static UserAttributeUpdater forUserByUsername(Keycloak adminClient, String realm, String userName) { UsersResource users = adminClient.realm(realm).users(); List foundUsers = users.search(userName);