package org.pac4j.oidc.run;
import org.pac4j.core.client.IndirectClient;
import org.pac4j.core.profile.CommonProfile;
import org.pac4j.core.run.RunClient;
import org.pac4j.oidc.profile.OidcProfile;
import static org.junit.Assert.*;
import org.pac4j.oidc.client.KeycloakOidcClient;
import org.pac4j.oidc.config.KeycloakOidcConfiguration;
/**
* Run a manual test for keycloak (http://www.keycloak.org/)
*
* @author Julio Arrebola
* @since 2.0.0
*/
public class RunKeycloakOidcClient extends RunClient {
// Test values
private static final String CLIENT_ID="test";
private static final String SECRET_VALUE="secret";
private static final String AUTH_URL="http://localhost:8080/auth";
private static final String REALM_VALUE="test";
private static final String CALLBACK_VALUE=PAC4J_BASE_URL;
private static final String LOGIN="user";
private static final String PASSWORD_VALUE="password";
// Profile values
private static final String IDENTIFIER="IDENTIFIER";
private static final String NAME_VALUE="Name";
private static final String PREFERRED_USERNAME="preferred_username";
private static final String GIVEN_NAME="GivenName";
private static final String FAMILY_NAME="FamilyName";
private static final String EMAIL_VALUE="test@test.com";
private static final String ISSUER="http://localhost:8080/auth/realms/test";
public static void main(final String[] args) throws Exception {
new RunKeycloakOidcClient().run();
}
@Override
protected String getLogin() {
return LOGIN;
}
@Override
protected String getPassword() {
return PASSWORD_VALUE;
}
@Override
protected IndirectClient getClient() {
final KeycloakOidcConfiguration configuration = new KeycloakOidcConfiguration();
configuration.setClientId(CLIENT_ID);
configuration.setSecret(SECRET_VALUE);
configuration.setBaseUri(AUTH_URL);
configuration.setRealm(REALM_VALUE);
KeycloakOidcClient client = new KeycloakOidcClient(configuration);
client.setCallbackUrl(CALLBACK_VALUE);
return client;
}
@Override
protected void verifyProfile(final CommonProfile userProfile) {
final OidcProfile profile = (OidcProfile) userProfile;
assertEquals(IDENTIFIER, profile.getId());
assertNotNull(profile.getIdToken());
assertNotNull(profile.getNotBefore());
assertEquals(ISSUER, profile.getIssuer());
assertEquals(NAME_VALUE, profile.getDisplayName());
assertNotNull(profile.getExpirationDate());
assertNotNull(profile.getIssuedAt());
assertNotNull(profile.getAccessToken());
assertEquals(GIVEN_NAME, profile.getAttribute("given_name"));
assertEquals(FAMILY_NAME, profile.getAttribute("family_name"));
assertEquals(PREFERRED_USERNAME, profile.getAttribute("preferred_username"));
assertEquals(EMAIL_VALUE, profile.getAttribute("email"));
}
}