package org.keycloak.testsuite.util;
import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.UserResource;
import org.keycloak.representations.idm.UserRepresentation;
import java.util.ArrayList;
import java.util.Arrays;
import static org.keycloak.testsuite.admin.ApiUtil.findUserByUsernameId;
/**
* @author <a href="mailto:bruno@abstractj.org">Bruno Oliveira</a>.
*/
public class UserManager {
private static RealmResource realm;
private UserManager() {
}
public static UserManager realm(RealmResource realm) {
UserManager.realm = realm;
return new UserManager();
}
public UserManagerBuilder username(String username) {
return new UserManagerBuilder(findUserByUsernameId(realm, username));
}
public UserManagerBuilder user(UserResource user) {
return new UserManagerBuilder(user);
}
public class UserManagerBuilder {
private final UserResource userResource;
public UserManagerBuilder(UserResource userResource) {
this.userResource = userResource;
}
public void removeRequiredAction(String action) {
UserRepresentation user = initializeRequiredActions();
user.getRequiredActions().remove(action);
userResource.update(user);
}
public void addRequiredAction(String... actions) {
UserRepresentation user = initializeRequiredActions();
user.setRequiredActions(Arrays.asList(actions));
userResource.update(user);
}
public void assignRoles(String... roles) {
UserRepresentation user = userResource.toRepresentation();
if (user != null && user.getRealmRoles() == null) {
user.setRealmRoles(new ArrayList<String>());
}
user.setRealmRoles(Arrays.asList(roles));
userResource.update(user);
}
private UserRepresentation initializeRequiredActions() {
UserRepresentation user = userResource.toRepresentation();
if (user != null && user.getRequiredActions() == null) {
user.setRequiredActions(new ArrayList<String>());
}
return user;
}
}
}