/* * 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 enum AccessType { BEARER_ONLY, PUBLIC, CONFIDENTIAL }; 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 accessType(AccessType accessType) { switch (accessType) { case BEARER_ONLY: rep.setBearerOnly(true); break; case PUBLIC: rep.setPublicClient(true); break; case CONFIDENTIAL: rep.setPublicClient(false); break; } return defaultSettings(); } 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 ClientBuilder secret(String secret) { rep.setSecret(secret); return this; } private ClientRepresentation defaultSettings() { rep.setFullScopeAllowed(true); rep.setDirectAccessGrantsEnabled(true); rep.setAdminUrl(rep.getRootUrl()); if (rep.getRedirectUris() == null && rep.getRootUrl() != null) rep.setRedirectUris(Collections.singletonList(rep.getRootUrl().concat("/*"))); return rep; } }