+
Skip to content

UserTest for admin-client #60

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@

package org.keycloak.client.testsuite;

import jakarta.ws.rs.core.Response;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.keycloak.admin.client.Keycloak;
Expand All @@ -27,9 +29,14 @@
import org.keycloak.client.testsuite.common.RealmImporter;
import org.keycloak.client.testsuite.common.RealmRepsSupplier;
import org.keycloak.client.testsuite.framework.Inject;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.representations.idm.RoleRepresentation;
import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.testsuite.util.ApiUtil;
import org.keycloak.testsuite.util.RoleBuilder;
import org.keycloak.testsuite.util.ServerURLs;
import org.keycloak.testsuite.util.TestCleanup;
import org.keycloak.util.JsonSerialization;

import java.io.IOException;
Expand All @@ -41,6 +48,9 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;

import static org.keycloak.testsuite.util.Users.setPasswordFor;

public abstract class AbstractAdminClientTest implements RealmRepsSupplier {

Expand All @@ -49,6 +59,8 @@ public abstract class AbstractAdminClientTest implements RealmRepsSupplier {
protected RealmResource realm;
protected String realmId;

protected Map<String, TestCleanup> testCleanup = new HashMap<>();

@org.keycloak.client.testsuite.framework.Inject
protected Keycloak adminClient;

Expand Down Expand Up @@ -86,6 +98,11 @@ public void importRealms() {
realmId = realm.toRepresentation().getId();
}

@AfterEach
public void cleanup() {
this.testCleanup.keySet().forEach(key-> getCleanup(key).executeCleanup());
}

@Override
public boolean removeVerifyProfileAtImport() {
// remove verify profile by default because most tests are not prepared
Expand Down Expand Up @@ -113,4 +130,75 @@ RoleRepresentation createRealmRole(RoleRepresentation role) {
realm.roles().create(role);
return realm.roles().get(role.getName()).toRepresentation();
}

public static UserRepresentation createUserRepresentation(String id, String username, String email, String firstName, String lastName, List<String> groups, boolean enabled) {
UserRepresentation user = new UserRepresentation();
user.setId(id);
user.setUsername(username);
user.setEmail(email);
user.setFirstName(firstName);
user.setLastName(lastName);
user.setGroups(groups);
user.setEnabled(enabled);
return user;
}

public static UserRepresentation createUserRepresentation(String username, String email, String firstName, String lastName, List<String> groups, boolean enabled) {
return createUserRepresentation(null, username, email, firstName, lastName, groups, enabled);
}

public static UserRepresentation createUserRepresentation(String username, String email, String firstName, String lastName, boolean enabled) {
return createUserRepresentation(username, email, firstName, lastName, null, enabled);
}

public static UserRepresentation createUserRepresentation(String username, String email, String firstName, String lastName, boolean enabled, String password) {
UserRepresentation user = createUserRepresentation(username, email, firstName, lastName, enabled);
setPasswordFor(user, password);
return user;
}

public static UserRepresentation createUserRepresentation(String username, String password) {
UserRepresentation user = createUserRepresentation(username, null, null, null, true, password);
return user;
}

public String createUser(String realm, String username, String password, String firstName, String lastName, String email, Consumer<UserRepresentation> customizer) {
UserRepresentation user = createUserRepresentation(username, email, firstName, lastName, true, password);
customizer.accept(user);
return ApiUtil.createUserWithAdminClient(adminClient.realm(realm), user);
}

public String createUser(String realm, String username, String password, String firstName, String lastName, String email) {
UserRepresentation homer = createUserRepresentation(username, email, firstName, lastName, true, password);
return ApiUtil.createUserWithAdminClient(adminClient.realm(realm), homer);
}

protected void createAppClientInRealm(String realm) {
ClientRepresentation client = new ClientRepresentation();
client.setClientId("test-app");
client.setName("test-app");
client.setSecret("password");
client.setEnabled(true);
client.setDirectAccessGrantsEnabled(true);

client.setRedirectUris(Collections.singletonList(ServerURLs.AUTH_SERVER_URL + "/*"));

Response response = adminClient.realm(realm).clients().create(client);
response.close();
}

protected TestCleanup getCleanup(String realmName) {
if (!this.testCleanup.containsKey(realmName)) {
this.testCleanup.put(realmName, new TestCleanup(realmName, adminClient));
}
return this.testCleanup.get(realmName);
}

protected TestCleanup getCleanup() {
return getCleanup(REALM_NAME);
}

protected RealmResource testRealm() {
return adminClient.realm("test");
}
}
Loading
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载