Removal of duplicated code for testhelper

Effectively make use of username and password
Refactoring packages
Including ClientBuilder
This commit is contained in:
Bruno Oliveira 2017-03-31 09:37:27 -03:00
parent d264a823d9
commit 01e7d79b1f
2 changed files with 94 additions and 37 deletions

View file

@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
*/ */
package org.keycloak.helper; package org.keycloak.test;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
@ -27,20 +27,21 @@ import org.keycloak.admin.client.Keycloak;
import org.keycloak.client.registration.Auth; import org.keycloak.client.registration.Auth;
import org.keycloak.client.registration.ClientRegistration; import org.keycloak.client.registration.ClientRegistration;
import org.keycloak.client.registration.ClientRegistrationException; import org.keycloak.client.registration.ClientRegistrationException;
import org.keycloak.representations.idm.ClientRepresentation;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.Arrays;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import org.keycloak.representations.idm.ClientInitialAccessCreatePresentation; import org.keycloak.representations.idm.ClientInitialAccessCreatePresentation;
import org.keycloak.representations.idm.ClientInitialAccessPresentation; import org.keycloak.representations.idm.ClientInitialAccessPresentation;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.CredentialRepresentation; import org.keycloak.representations.idm.CredentialRepresentation;
import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.representations.idm.RoleRepresentation; import org.keycloak.representations.idm.RoleRepresentation;
import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.representations.idm.UserRepresentation;
import org.keycloak.test.builders.ClientBuilder;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Response;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.Arrays;
public class TestsHelper { public class TestsHelper {
@ -82,30 +83,7 @@ public class TestsHelper {
} }
public static String createDirectGrantClient() { public static String createDirectGrantClient() {
ClientRepresentation clientRepresentation = new ClientRepresentation(); return createClient(ClientBuilder.create("test-dga").publicClient(true));
clientRepresentation.setClientId("test-dga");
clientRepresentation.setFullScopeAllowed(true);
clientRepresentation.setPublicClient(Boolean.TRUE);
clientRepresentation.setDirectAccessGrantsEnabled(true);
ClientRegistration reg = ClientRegistration.create()
.url(keycloakBaseUrl, testRealm)
.build();
reg.auth(Auth.token(initialAccessCode));
try {
clientRepresentation = reg.create(clientRepresentation);
registrationAccessCode = clientRepresentation.getRegistrationAccessToken();
ObjectMapper mapper = new ObjectMapper();
reg.auth(Auth.token(registrationAccessCode));
clientConfiguration = mapper.writeValueAsString(reg.getAdapterConfig(clientRepresentation.getClientId()));
} catch (ClientRegistrationException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return clientConfiguration;
} }
public static void deleteClient(String clientId) { public static void deleteClient(String clientId) {
@ -171,7 +149,7 @@ public class TestsHelper {
} }
public static boolean ImportTestRealm(String username, String password, String realmJsonPath) throws IOException { public static boolean importTestRealm(String username, String password, String realmJsonPath) throws IOException {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
ClassLoader classLoader = TestsHelper.class.getClassLoader(); ClassLoader classLoader = TestsHelper.class.getClassLoader();
@ -191,7 +169,7 @@ public class TestsHelper {
} }
public static boolean ImportTestRealm(String username, String password) throws IOException { public static boolean importTestRealm(String username, String password) throws IOException {
testRealm = appName + "-realm"; testRealm = appName + "-realm";
RealmRepresentation realmRepresentation = new RealmRepresentation(); RealmRepresentation realmRepresentation = new RealmRepresentation();
realmRepresentation.setRealm(testRealm); realmRepresentation.setRealm(testRealm);
@ -237,19 +215,20 @@ public class TestsHelper {
password, password,
"admin-cli"); "admin-cli");
UserRepresentation userRepresentation = new UserRepresentation(); UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setUsername("testuser"); userRepresentation.setUsername(username);
userRepresentation.setEnabled(Boolean.TRUE); userRepresentation.setEnabled(Boolean.TRUE);
Response response = keycloak.realms().realm(realmName).users().create(userRepresentation); Response response = keycloak.realms().realm(realmName).users().create(userRepresentation);
String userId = getCreatedId(response); String userId = getCreatedId(response);
response.close(); response.close();
CredentialRepresentation rep = new CredentialRepresentation(); CredentialRepresentation rep = new CredentialRepresentation();
rep.setType(CredentialRepresentation.PASSWORD); rep.setType(CredentialRepresentation.PASSWORD);
rep.setValue("password"); rep.setValue(password);
rep.setTemporary(false); rep.setTemporary(false);
keycloak.realms().realm(realmName).users().get(userId).resetPassword(rep); keycloak.realms().realm(realmName).users().get(userId).resetPassword(rep);
//add roles //add roles
RoleRepresentation representation = new RoleRepresentation(); RoleRepresentation representation = new RoleRepresentation();
representation.setName("user"); representation.setName("user");
keycloak.realms().realm(realmName).roles().create(representation); keycloak.realms().realm(realmName).roles().create(representation);
RoleRepresentation realmRole = keycloak.realms().realm(realmName).roles().get("user").toRepresentation(); RoleRepresentation realmRole = keycloak.realms().realm(realmName).roles().get("user").toRepresentation();
keycloak.realms().realm(realmName).users().get(userId).roles().realmLevel().add(Arrays.asList(realmRole)); keycloak.realms().realm(realmName).users().get(userId).roles().realmLevel().add(Arrays.asList(realmRole));

View file

@ -0,0 +1,78 @@
/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.keycloak.test.builders;
import org.keycloak.representations.idm.ClientRepresentation;
import java.util.Collections;
/**
* @author <a href="mailto:bruno@abstractj.org">Bruno Oliveira</a>
*/
public class ClientBuilder {
private ClientRepresentation rep;
public static ClientBuilder create(String clientId) {
ClientRepresentation rep = new ClientRepresentation();
rep.setEnabled(Boolean.TRUE);
rep.setClientId(clientId);
return new ClientBuilder(rep);
}
private ClientBuilder(ClientRepresentation rep) {
this.rep = rep;
}
public ClientRepresentation bearerOnly(boolean bearerOnly) {
rep.setBearerOnly(bearerOnly);
return rep;
}
public ClientBuilder rootUrl(String rootUrl) {
rep.setRootUrl(rootUrl);
return this;
}
public ClientBuilder redirectUri(String redirectUri) {
rep.setRedirectUris(Collections.singletonList(redirectUri));
return this;
}
public ClientBuilder baseUrl(String baseUrl) {
rep.setBaseUrl(baseUrl);
return this;
}
public ClientBuilder adminUrl(String adminUrl) {
rep.setAdminUrl(adminUrl);
return this;
}
public ClientRepresentation publicClient(boolean publicClient) {
rep.setFullScopeAllowed(true);
rep.setPublicClient(publicClient);
rep.setDirectAccessGrantsEnabled(true);
rep.setAdminUrl(rep.getRootUrl());
if (rep.getRedirectUris() == null && rep.getRootUrl() != null)
rep.setRedirectUris(Collections.singletonList(rep.getRootUrl().concat("/*")));
return rep;
}
}